1
我通常是一個C#人,它處理這個問題,主要是在處理「最佳匹配」呼叫。我現在試圖在C++中做類似的事情,但是得到一個編譯錯誤。長話短說,這是方法超載和覆蓋的組合。C++ Overload&Override - 無法初始化類型爲''的參數,類型爲'''
Bar類:公共富{} //內容並不真正的問題在這裏
class Base
{
public:
virtual void Do(Foo* foo) { }
virtual void Do(Bar* bar) { }
};
class Derived : public Base
{
public:
virtual void Do(Bar* bar) { }
}
Foo* foo = new Foo();
Derived* d = new Derived();
d->Do(foo); //cannot initialize a parameter of type 'Bar*' with an rvalue of type 'Foo*'
所以,它試圖解決對僅的方法Derived
的方法,而不是承認的基類實現一個有效的匹配。再次,C#找到基本方法。 C++不能這樣做,還是我錯過了一些東西?
TIL,謝謝。目前我正在使用手機,但Java是否以同樣的方式工作? – Qix
Java在此解析方式與C#相同,因此不需要額外的語法來避免「名稱隱藏」。 –