在c++中使用虚函数与向量

Using virtual functions in C++ with vectors

本文关键字:函数 向量 c++      更新时间:2023-10-16

我有一个叫做Matrix的基类,它有一个函数转置。我也有一个派生类Matrix2这是从矩阵

继承公开
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<_Ty> *'转换为'std::vector<_Ty> *'

怎么了?

在向量中访问矩阵类的转置函数的方法是什么?

我得到以下错误:

error C2039: 'transpose' : is not a member of 'Matrix2'

谢谢

您尝试转换没有(用户定义的)转换的不同类型。

这是不可能的。

vector <Matrix2>不能分配给vector <Matrix>&,它们没有共同的碱基。这不是Java,也没有vector<?>

如果您在派生类上实例化模板,则模板实例化不会从与基类实例化的相同模板中自动派生

因为这些模板实例化不是通过继承来关联的,所以使用一个模板实例就好像它是从另一个模板派生出来的一样是不可能的。使用reinterpret_cast强制编译器会导致未定义行为