我有以下问题。我正忙于用C++编写继承结构。简而言之,这就是我试图做的。 类 A 是基类,类 B 和 C 是继承的类。 类 B 和 C 各具有不同且唯一的成员函数。
现在,使用 boost 智能指针库,我制作了一个类类型 A 的共享指针的向量,如下所示:
class A{
A();
virtual print();
}
class B : public A{
B();
virtual print();
}
class C{
C();
virtual print();
void uniqueFunc();
}
int main(){
vector<shared_ptr<A> > myA;
shared_ptr<B> myB;
shared_ptr<C> myC;
myA.push_back(myB);
myA.push_back(myC);
}
现在我有一种方法可以检查向量中的成员类型。这不是问题所在。我的问题是,如何在向量中为类类型 C 的成员调用 uniqueFunc。我必须沮丧吗?还是我必须创建虚拟功能。但是,我确实需要 uniqueFunc 是 C 类独有的。我想避免创建成员的副本,而是直接更改向量中的成员。
您要么需要向下投boost::shared_ptr<C>
,要么需要在 A
中创建虚拟函数。
假设你想向下投射,你可以使用 Boost 的指针投射函数:
boost::static_pointer_cast<C>(myA.back())->uniqueFunc();
(如果需要动态类型检查,请使用dynamic_pointer_cast<C>
。