模板实例和继承的转换错误
Conversion error with template instance and inheritance
对不起,如果之前有人问过这个具体问题。这似乎很简单。
假设我有以下类 X
template<class T>
class X
{
public:
virtual X<T> DoStuff(const X<T>& arg) {
X<T> res;
//something with res
return res;
}
}
和Y级
class Y: public X<float>
{
//stuff
}
我主要执行以下操作:
Y var1;
Y var2;
Y var3 = var1.DoStuff(var2);
X<float> var4;
Y var3 = var4;
我得到"两个分配都要求从 X 转换为非标量类型 Y。
我如何实现我想要的,即使用 Y 类作为 X 的别名?
如果您只想使用 Y
作为 X<float>
的别名,则为以下之一:
typedef X<float> Y; // Old school
using Y = X<float>; // If you want to be fancy and C++11'ish.
是最简单的解决方案。 如果你想添加一些更方便的函数来Y
,你需要从X<float>
添加一个构造函数
Y(const X<float>& rhs) : X<float>(rhs) {}
仅凭这一点就足够了,但您可能希望直接从X<float>
添加分配运算符并移动两者的版本。
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么g++在未执行的代码处标记强制转换错误
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 如何在构建对象堆栈时解决转换错误?
- 执行具有转换错误的过程
- 指向类成员函数的指针中存在类型转换错误
- 为什么我在这里收到C++没有已知的转换错误?
- 增加图形转换错误
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 指针和双重转换错误,代码没有
- 自定义函数转换错误?
- 将 C 程序转换为具有大量字符* 和无符号字符转换错误的C++
- 如何在我使用过的Arduino库之一中固定构造函数中的转换错误
- 试图使用strCMP时的char转换错误
- 我在 TSP 的C++解决方案中遇到转换错误
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误
- 此语法中的构造函数转换错误
- Opengl 精度转换错误编译错误 E0415
- 无效的转换错误和无效的类型