這就是我想要做的:
class Derived : public Base
{
public:
int someNewMethod(int someIntParam)
{
// Does something not in the base class
return 0; // success
}
};
然后我應該能夠使用 Derived 代替 Base (同時完全意識到參考可能會變得無效,具體取決于何時洗掉 Base 物件):
Derived &d = *pointerToSomeExistingBaseObject;
d.someNewMethod(12);
雖然在代碼中的其他地方,很遠很遠(和之前):
Base *pointerToSomeExistingBaseObject = new Base(...);
謝謝!
uj5u.com熱心網友回復:
用 C 中的一個額外方法創建一個功能齊全的派生類?
你可以這樣做。你這樣做了Derived(假設someNewMethod不在Base)。
Derived &d = *pointerToSomeExistingBaseObject; d.someNewMethod(12);雖然在代碼中的其他地方,很遠很遠(和之前):
Base *pointerToSomeExistingBaseObject = new Base(...);
不,你不能那樣做。為了呼叫 的非靜態成員函式Derived,您必須創建一個型別的物件Derived或從它派生的型別。
uj5u.com熱心網友回復:
典型的解決方案是使函式獨立:
int someNewMethod(Base& obj, int someIntParam)
{
// Does something with obj that is not in Base
return 0; // success
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362174.html
