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

时间:2012-09-21 17:52:45

标签: c++ boost smart-pointers

我有以下问题。我正忙着用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类是唯一的。我想避免创建成员的副本,而是直接更改向量中的成员。

1 个答案:

答案 0 :(得分:3)

您需要向下转换为boost::shared_ptr<C>或在A中创建虚拟函数。

假设你想要转发,你可以使用Boost的pointer cast functions

boost::static_pointer_cast<C>(myA.back())->uniqueFunc();

(如果需要动态类型检查,请使用dynamic_pointer_cast<C>。)