在 C++ 中调用继承的类特定函数



我有以下问题。我正忙于用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>

相关内容

  • 没有找到相关文章

最新更新