代码描述得不全,有以下推导:
1 verts应该是vector类的对象。
2 并且定义是:vector
在上面的假设下,这个错误报错原因:
1 vector的push_back的参数是容器类型的常量,会自动调用拷贝复制来完成数据存放。
注意!!:不是真的把对应的数据存放到容器中!!!!,而是复制拷贝一份到容器中。
2 因此verts.push_back(new vertex(vSize.c));是不正确的。
3 有两种改法:
a) 保持verts定义不变:
verts.push_back(vertex(vSize,c)); //这句不是什么编译器都支持,如报错改下面写法。
或:
vertex tmp(vSize,c);
verts.push_back(tmp)。
!!!注意:这种做法,一定要保证vertex类的复制拷贝函数有效。
b) 修改verts的定义:
vector
这样修改编译可以通过。
!!!注意:这种做法,verts要负责push_back的对象析构。必须显示的将内部对象进行delete。
你的verts是这样声明的吧? vector
你在push_back的时候传了一个指针进去,类型不匹配,试试用
verts.push_back(vertex(vSize, c));