C++ 需要帮助修复奇怪的模板错误吗
当我试图编译我的项目时,我得到一个C2440错误,它是C++ 需要帮助修复奇怪的模板错误吗,c++,templates,inheritance,C++,Templates,Inheritance,当我试图编译我的项目时,我得到一个C2440错误,它是“初始化”:无法从“vector”转换为“vector\u 2D”。C2440上的MSDN文档说编译器无法从“type1”转换为“type2”。我有一个基类,vector: template <unsigned int component_count> class vector {...} 笔的位置在前面创建,如下所示 vector_2D pen_position(string_position); 我似乎无法纠正我的错误。有
“初始化”:无法从“vector”转换为“vector\u 2D”。
C2440上的MSDN文档说编译器无法从“type1”转换为“type2”。
我有一个基类,vector:
template <unsigned int component_count>
class vector {...}
笔的位置在前面创建,如下所示
vector_2D pen_position(string_position);
我似乎无法纠正我的错误。有人能指出哪里出了问题和/或如何解决吗
vector operator + (const vector& a_vector) const
这就是问题所在。您将返回一个基,然后尝试将其分配给派生的
最简单的修复方法是提供重载
vector_2D operator + (const vector_2D& a_vector) const
你的
操作符+
重载的原型是什么?你的操作符+
是如何声明/定义的?它是:向量操作符+(const vector&a_vector)contf我想避免完全重新定义操作符,我是否能够从派生类运算符调用基类加法运算符,并将返回的基类再次强制转换为派生类运算符?如果没有,我想我只需要分别定义vector_2D、vector_3D和vector_4D,而不使用继承。@Cole您可以使用某种标记调度模板来完成,但它更复杂。好的,我想我将删除继承。谢谢你的回答和评论!
vector operator + (const vector& a_vector) const
vector_2D operator + (const vector_2D& a_vector) const