1
我觉得我的问题很简单而明确:如何正确地从基类的重载转换继承
我有基类AbstractMatrix,和Matrix它的子类,我想使简单的换算:
namespace mtrx {
/* mycode */
class AbstractMatrix {
public:
/* -//- */
operator Matrix();
/* -//- */
}
class Matrix : public AbstractMatrix {
/* -//- */
}
}
AbstractMatrix.cpp:
AbstractMatrix::operator Matrix(){
return Matrix(data);
}
编译器为消息:
Matrix.h:39:12: error: expected type-specifier before ‘Matrix’
operator Matrix();
^
我做错了什么? 是否有可能进行此类转换?我想是的,因为我只想让基于超,但没有任何枯燥的语法构造,我需要它隐含
谢谢
我更好奇你为什么需要这样做?运营商应该解决什么问题?你不能有一个虚拟的“getter”函数返回一个'AbstractMatrix'指针吗?或者可能使用[CRTP](https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)来了解子类? –
至于你的问题,你*确实知道符号必须在使用符号之前声明(或者有时甚至定义)*例如foo(矩阵A)的 –
;如果我做这样的foo(B),其中B是AbstractMatrix,则B将被转换为Matrix类。感谢您的建议,我最近开始学习C++,我会阅读关于虚拟功能和CRTP,可能会帮助我。 – verganz