2

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

4

1 回答 1

3

您需要向下转换boost::shared_ptr<C>或在A.

假设你想向下转换,你可以使用 Boost 的指针转换函数

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

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

于 2012-09-21T17:59:38.103 回答