這是一個簡單的問題(我認爲)。我只是不知道這件事,我正在尋找一個好的解決方案太:)C++:繼承優先
比方說,我有這樣的:
class Base {
public:
virtual ~Base() {}
virtual Base& connect(Base &b) = 0;
}
class Derived: public Base {
public:
virtual ~Derived() {}
virtual Base& connect(Base &b)
{
// do_something
}
}
// Name is a class that is basically a String and assign it to any A or B object.
class A: public Derived {
public:
A(name N) { ... }
virtual ~A() {}
}
class B: public Derived {
public:
B(name N) { ... }
virtual ~B() {}
A& connect(A &a)
{
// do something else
}
}
int main(int argc, char *argv[])
{
A objA("A");
B objB("B");
// Here's where is my issue
objB.connect(objA);
}
當我打電話objB.connect(objA)
,它實際上是調用Base& connect(Base &b)
。我明白,因爲他們都是Base
的孩子,並且都有Derived
中定義的connect()
。但事情是,我希望每當我有objB.connect(objA)
時,它應該調用A& connect(A &a)
來代替。
我想知道是否有辦法以我想要的方式擁有它。
謝謝:)
UPDATE
我編輯的這一點,因爲我有幾個錯別字。我沒有複製粘貼代碼,因爲它比我希望的複雜得多。 <希望它夠了。
顯示編譯的代碼。 'objA = new A();'用指針初始化一個對象。你的bug可能是對引用或強制轉換(或其他類型問題)的細微誤用,所以我們需要*精確*代碼來重現它。 – Angew
你在連接(A&a)的定義中忘記了'virtual' – Thomas
這個東西不會編譯'A objA = new A()'。我用過的所有編譯器都拒絕編譯這一行。你是如何得到你的輸出的? – DumbCoder