我有一个基类B
和几个派生的模板类,,,,D<int>
等等D<float>
(D<double>
这么多)
在我的程序中,我发现我有一个 B 指针,我知道该指针指向 D 特化之一的实例。我还有一个标识派生类型的唯一键。
所以,我想使用我的基类指针和唯一类型键调用正确的派生类方法。我实际上想在几个地方这样做,所以我想出的一个解决方案不仅丑陋,而且很麻烦。
有没有更好的方法来访问在 C++ 中具有基指针和唯一键的派生类成员?
我不想/不能修改基类。boost库是公平的游戏。
这是我的潜在代码,但我不喜欢在需要访问派生成员函数/变量的任何地方复制它。所有这一切都是为了一个成员函数调用?!!
B * bptr = ...
std::type_info * typekey = ...
if (typekey == &typeid(D<float>) ) {
D<float> * dptr = static_cast<D<float>*>(bptr);
dptr->derivedMember();
} else if (typekey == &typeid(D<double>) ) {
D<float> * dptr = static_cast<D<double>*>(bptr);
dptr->derivedMember();
} else if (typekey == &typeid(D<int>) ) {
D<float> * dptr = static_cast<D<int>*>(bptr);
dptr->derivedMember();
}