使用带有向量的C ++中的虚函数

时间:2014-05-03 21:06:33

标签: c++ inheritance

我有一个名为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'

由于

2 个答案:

答案 0 :(得分:2)

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

那是不可能的。

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

答案 1 :(得分:0)

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

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