我有一个名为Matrix的基类,它有一个函数转置。我还有一个派生类Matrix2,它是从Matrix
公开继承的class Matrix
{
public:
Matrix();
...
Matrix Transpose(void);
...
};
class Matrix2 : public Matrix
{
public:
Matrix2();
...
};
在我的主要代码中,我尝试了这个。
vector <Matrix2> myMatrix2;
vector <Matrix> *b = &myMatrix2;
这样做
b->transpose();
但是我收到以下错误
错误C2440:'初始化':无法转换为'std :: vector&lt; _Ty&gt; *'到'std :: vector&lt; _Ty&gt; *'
出了什么问题......
从向量中的Matrix类访问转置函数的方法是什么?
我收到以下错误。
error C2039: 'transpose' : is not a member of 'Matrix2'
由于
答案 0 :(得分:2)
您尝试转换没有(用户定义的)转换的不同类型。
那是不可能的。
vector <Matrix2>
无法分配给vector <Matrix>&
,它们没有共同基础。这不是Java,也没有vector<?>
。
答案 1 :(得分:0)
如果在派生类上实例化模板,则模板实例化不会自动从使用基类实例化的同一模板派生。
因为这些模板实例化与继承无关,所以使用一个模板实例化就好像它是从/派生的另一个是不可能的。使用reinterpret_cast
强制编译器会导致未定义行为。