当我尝试编译我的项目时,我得到一个C2440错误说'initializing' : cannot convert from 'vector<component_count>' to 'vector_2D'.
C2440上的MSDN文档说The compiler cannot cast from 'type1' to 'type2'.
我有一个基类,vector:
template <unsigned int component_count>
class vector {...}
和派生类vector_2D:
class vector_2D : public vector<2>
我的基类定义了默认和复制构造函数,以及运算符重载。给我错误的代码是:
vector_2D character_position = pen_position + vector_2D(offset_x, offset_y);
pen_position更早创建为
vector_2D pen_position(string_position);
我无法解决我的错误。任何人都可以指出出了什么问题和/或如何解决它?
答案 0 :(得分:0)
vector operator + (const vector& a_vector) const
是问题所在。您将返回一个基础,然后尝试将其分配给派生。
最简单的解决方法是提供重载
vector_2D operator + (const vector_2D& a_vector) const