C++中虚函数的矢量化

C++中虚函数的矢量化,c++,inheritance,C++,Inheritance,我有一个叫做Matrix的基类,它有一个函数转置。我还有一个派生类Matrix2,它是从Matrix公开继承的 class Matrix { public: Matrix(); ... Matrix Transpose(void); ... }; class Matrix2 : public Matrix { public: Matrix2(); ... }; 在我的主代码中,我尝试了这个 vec

我有一个叫做Matrix的基类,它有一个函数转置。我还有一个派生类Matrix2,它是从Matrix公开继承的

class Matrix
{
 public:
    Matrix();
    ...
    Matrix Transpose(void);
...
    };

class Matrix2 : public Matrix
    {
     public:
        Matrix2();
        ...
      };
在我的主代码中,我尝试了这个

vector <Matrix2> myMatrix2;
vector <Matrix> *b = &myMatrix2;
但是我得到了以下错误

错误C2440:“正在初始化”:无法从“std::vector*”转换为“std::vector*”

怎么了


从vector中的矩阵类访问转置函数的方法是什么

我得到以下错误

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

感谢您尝试转换没有用户定义转换的不同类型

那是不可能的


向量不可分配给向量&,它们没有公共基。这不是Java,也没有向量。

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


由于这些模板实例化与继承无关,因此不可能将其中一个作为另一个的派生项来使用。强制使用重新解释强制转换编译器会导致未定义的行为。

什么是正确的?vector和vector是完全不同的、不相关的类型。它们的指针不兼容。仅仅因为B是从A派生的,并不意味着它们是相同的类型。从vector中的Matrix类访问转置函数的方法是什么?任何公开派生的内容都应该可以直接从Matrix2对象访问。您将不会从Matrix2访问矩阵中的函数,您将访问Matrix2中的派生函数。我尝试过,但I无法访问它。它说转置函数不是为Matrix2定义的。我必须在Matrix2中定义函数原型吗?具有讽刺意味的是,如果你专门化它,它可能会被派生出来:/我发现这个解释非常混乱。如果你问我的话,没有足够的协方差。@sehe:该死,我真的让一个专家滑进去了。接得好+1为措辞修正。但是,编译错误不是未定义的行为。。。哈哈@
error C2039: 'transpose' : is not a member of 'Matrix2'