Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 需要帮助修复奇怪的模板错误吗_C++_Templates_Inheritance - Fatal编程技术网

C++ 需要帮助修复奇怪的模板错误吗

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); 我似乎无法纠正我的错误。有

当我试图编译我的项目时,我得到一个C2440错误,它是
“初始化”:无法从“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