これは Python と C++ の質問です。
私は複数の継承を試していますが、この例に出くわしました。
B1 B2
\ /
D
2 つの (独立した?) 親クラスB1, B2
と 1 つの子クラスがあるとしD
ます。のオブジェクトのみに関心がありますclass D
。
class B1:
def f1(self):
print "In f1"
class B2:
def f2(self):
self.f1()
class D (B1, B2):
def fD(self):
self.f2()
d = D()
d.fD()
Output: In f1
(少なくとも私にとって)興味深いのは、それclass B2
についての知識がなくclass B1
ても、問題なくf2
呼び出すことができるということです。self.f1()
f1
私はこれを正確に C++ で複製しようとしましたが、から呼び出す方法がわからないため、機能させることができませんでしたf2
。
class B1 {
public:
virtual ~B1() {}
virtual void f1() { cout << "In f1" << endl; }
};
class B2 {
public:
virtual ~B2() {}
virtual void f2() { /* What goes here?? */ }
};
class D : public B1, public B2 {
public:
void fD() { f2(); }
};
だから、Pythonがこれを処理できるのに、C++ができない理由/方法を知りたいですか?
また、C++ コードを Python コードのように動作させるには、どのような最小限の変更を加えることができますか?