谁能解释我在做什么错:
我有一个MClass
和MClass2 (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。)
因此,由于*Mbuff
是MClass2
对象,因此不能将其放在MClass
对象的向量中。
但是您需要更具体地说明“这不起作用”的含义。