小编Kae*_*Kae的帖子

多态性和shared_ptr成员

测试多态性和虚函数&shared_ptr,我试图理解下面的最小例子所描述的情况.

class B{
public:
  // Definition of class B
  virtual void someBMethod(){
   // Make a burger
  };
};

class C : public B {
public:
  // Definition of class C
  void someBMethod(){
   // Make a pizza
  };
};

class A{
public:
  A(B& SomeB) : Member(std::make_shared<B>(SomeB)){};
  std::shared_ptr<B> Member;
};
Run Code Online (Sandbox Code Playgroud)

现在,我们可以拥有主力

int main(){
  C SomeC;
  A SomeA(SomeC);
  A.Member->someBMethod(); // someBMethod from B is being executed.
};
Run Code Online (Sandbox Code Playgroud)

除非我不包括从我的实际代码的小例子,有些错误,我觉得SomeC是越来越切下来的B,或者至少someBMethodB正在calledin的最后一行.

问:应该用什么来初始化正确的方式Member以这样的方式,该方法someBMethodC …

c++ polymorphism shared-ptr

5
推荐指数
2
解决办法
2994
查看次数

标签 统计

c++ ×1

polymorphism ×1

shared-ptr ×1