vector c++问题,求解决

2025-02-28 13:19:18
推荐回答(2个)
回答1:

代码描述得不全,有以下推导:
1 verts应该是vector类的对象。
2 并且定义是:vector verts;

在上面的假设下,这个错误报错原因:
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;
这样修改编译可以通过。
!!!注意:这种做法,verts要负责push_back的对象析构。必须显示的将内部对象进行delete。

回答2:

你的verts是这样声明的吧? vector verts;
你在push_back的时候传了一个指针进去,类型不匹配,试试用
verts.push_back(vertex(vSize, c));