我一直在嘗試使用VS2013繼承C++中的運算符。我有它實現幾種方法和一類B,其繼承A. A級還實現了一個運算符*,其與另一個C類相互作用的類A,是這樣的:繼承運算符的問題*
class A
{
...
C operator*(const C &_objectC) {...}
}
class B: public A
{
...
}
由於A和B之間不要的變化不會改變操作符*的實現,很高興從A繼承它而不是重新實現它。我一直在試圖這樣做,但是編譯器不能找到A.
實現下面的代碼操作:
B foo = ...;
C bar = ...;
C result = foo * bar;
我有此錯誤:
error C2679: binary '*' : no operator found which takes a right-hand operand of type 'class C' (or there is no acceptable conversion)
我知道operator =必須被重載,因爲編譯器總是爲每個類生成它的一個版本,所以你不能直接繼承它。
¿其他操作符是否可以繼承?我的理解是可能的,但我的編譯器不同意。 ¿有沒有我做錯的事情,或者我只需要重新實現操作員只調用父類的操作員?
在此先感謝。
你使用什麼編譯器?我可以在VS 2013中編譯這個罰款。 (注意:我假設operator *是公開的,爲簡潔起見,這部分只是被省略)。 – Lilshieste
您可以發佈一個不能編譯的實際示例?這適用於g ++。 – QuestionC