任何人都可以解释一下我做错了什么:
我有一个课程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
为什么不呢?
答案 0 :(得分:1)
如果确实MClass
继承自MClass2
,正如您通过撰写MClass : public MClass2 {}
建议的那样,那么您就不能将MClass2
对象视为MClass
个对象,但反过来。
(同样,如果您有Class Dog : public Animal
,您可以将狗视为动物,但您不能将动物视为狗。)
因此,由于*Mbuff
是MClass2
个对象,因此您无法将其放在MClass
个对象的向量中。
但是你需要更具体地说明你的意思&#34;这不起作用&#34;。