gpt4 book ai didi

c++ - 如何正确重载从基类到继承的转换

转载 作者:行者123 更新时间:2023-11-30 01:07:08 29 4
gpt4 key购买 nike

我觉得我的问题简单明了:

我有基类 AbstractMatrix 和它的子类 Matrix,我想做简单的转换:

namespace mtrx {
/* mycode */
class AbstractMatrix {
public:
/* -//- */
operator Matrix ();
/* -//- */
}
class Matrix : public AbstractMatrix {
/* -//- */
}
}

抽象矩阵.cpp:

AbstractMatrix::operator Matrix(){
return Matrix(data);
}

编译器给出信息:

Matrix.h:39:12: error: expected type-specifier before ‘Matrix’
operator Matrix ();
^

我做错了什么?是否可以进行此类转换?我想是的,因为我只想基于父类(super class)创建构造函数,但没有任何无聊的语法,我需要它隐式

谢谢

最佳答案

您应该简单地提供一个前向声明:

namespace mtrx {

class Matrix; // <=== here

class AbstractMatrix {
public:
operator Matrix ();
};

class Matrix : public AbstractMatrix {

};

}

使 MatrixAbstractMatrix 类可见。


附言您可能应该重新考虑您的设计,因为使用转换运算符将基类转换为派生类对我来说很奇怪。

关于c++ - 如何正确重载从基类到继承的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45016326/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com