我如何获得虚拟继承权?

问题描述 投票:0回答:1

在下面的示例中,我有我的父母班和两个孩子班。每个孩子的对象都存储在父对象的向量中。遍历向量,我只能看到父类的方法调用。请帮助我正确地定义方法定义和vtable,以及如何避免切片效果。求助,我已经在python上做了太长时间了,在这样的地方还是可以的。

#include <iostream>
#include <vector>


using namespace std;

int main()
{

    class A{
        public:

        virtual string print(){return string("A");};
    };

   class B: public A{
       virtual string print() final {return string("B");};
   };

   class C: public A{
       virtual string print() final {return string("C");};
   };

   vector<A> v;
   v.push_back(B());
   v.push_back(C());

   for(auto x : v){
       cout << x.print() << endl;
   }

}

=>

$g++ -std=c++11 -o main *.cpp
$main
A
A

在下面的示例中,我有我的父母班和两个孩子班。每个孩子的对象都存储在父对象的向量中。遍历向量,我只能看到父类的方法调用。...

c++ c++11 abstract-class virtual-inheritance
1个回答
0
投票

让我们看看您的代码:

© www.soinside.com 2019 - 2024. All rights reserved.