假设我有一个名为Matrix的类,我在其中使用括号运算符重载。我还有一个子类:childMatrix(派生自Matrix),括号运算符以不同的方式重载。
我有一个对象childMatrix,但我想使用Matrix(父类)的运算符进行一些计算,这可能吗?
我试过了:
childMatrix& m;
m(1,1) = 1; // works fine
(Matrix)m(1,1) = 1 //error
(Matrix&)m(1,1) = 1 // error ( no match for ‘operator=’ (operand types are ‘Matrix’ and ‘int’))
答案 0 :(得分:1)
是的,这是可能的,而且你走在正确的轨道上;你只是混淆了运算符优先级:
((Matrix&)m)(1,1) = 1;
这假定operator()
不是virtual
;如果是的话,你不得不采用相当难看的语法:
m.Matrix::operator()(1,1) = 1;