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

Need help fixing strange template error

本文关键字:错误 帮助      更新时间:2023-10-16

当我试图编译我的项目时,我收到一个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);

我似乎无法纠正我的错误。有人能指出出了什么问题和/或如何解决吗?

vector operator + (const vector& a_vector) const

就是问题所在。您正在返回一个基,然后尝试将其分配给派生的。

最简单的解决方案是提供过载

vector_2D operator + (const vector_2D& a_vector) const