矢量不适用于我的班级

时间:2016-03-21 17:24:14

标签: c++ class vector

任何人都可以解释一下我做错了什么: 我有一个课程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

为什么不呢?

1 个答案:

答案 0 :(得分:1)

如果确实MClass继承自MClass2,正如您通过撰写MClass : public MClass2 {}建议的那样,那么您就不能将MClass2对象视为MClass个对象,但反过来。

(同样,如果您有Class Dog : public Animal,您可以将狗视为动物,但您不能将动物视为狗。)

因此,由于*MbuffMClass2个对象,因此您无法将其放在MClass个对象的向量中。

但是你需要更具体地说明你的意思&#34;这不起作用&#34;。