谁能解释我在做什么错:
我有一个MClassMClass2 (MClass : public MClass2 {})类,如下所示:

vector <MClass> mdata;
MClass2 *Mbuff = new MClass2;

以下作品
Mbuff->loadData(/*some data*/); //this works; I can print data from Mbuff

但是,这不是:
mdata.push_back(*Mbuff); //this doesn't work... I can't print data from mdata

为什么不?

最佳答案

如果确实MClass继承自MClass2,正如您似乎通过编写MClass : public MClass2 {}所暗示的那样,则您不能将MClass2对象视为MClass对象,但反之亦然。

(类似地,如果您具有Class Dog : public Animal,则可以将Dogs视为动物,但不能将Animals视为Dogs。)

因此,由于*MbuffMClass2对象,因此不能将其放在MClass对象的向量中。

但是您需要更具体地说明“这不起作用”的含义。

09-28 09:16