我有以下问题。我正忙于用 C++ 编写继承结构。简而言之,这就是我想要做的。 A类是基类,B、C类是继承类。 B 类和 C 类各有不同且独特的成员函数。
现在,使用 boost 智能指针库,我创建了一个类类型 A 的共享指针 vector ,如下所示:
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);
}
现在我有了一种检查 vector 中成员类型的方法。这不是问题。我的问题是,如何在 vector 中为类类型 C 的成员调用 uniqueFunc。我必须沮丧吗?或者我是否必须创建虚函数。但是,我确实需要 uniqueFunc 对类 C 是唯一的。我想避免创建成员的拷贝,而是直接更改 vector 中的成员。
最佳答案
你要么向下转换为boost::shared_ptr<C>
或者在 A
中创建一个虚函数.
假设你想向下转型,你可以使用 Boost 的 pointer cast functions :
boost::static_pointer_cast<C>(myA.back())->uniqueFunc();
(如果需要动态类型检查,则使用 dynamic_pointer_cast<C>
。)
关于c++ - 在 C++ 中调用继承的类特定函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12535625/