如何正确 push_back 一个对象?
Posted
技术标签:
【中文标题】如何正确 push_back 一个对象?【英文标题】:How to push_back an object properly? 【发布时间】:2015-05-24 04:08:40 【问题描述】:您好,我在将对象推回对象向量时遇到问题。
class boxes
protected:
int x = 0;
public:
void setx (int input)
x = input;
int getx ()
return x;
box;
box.setx(5);
vector <boxes> tetris;
tetris.push_back(box);
cout << box.getx();
cout << tetris.back().getx();
为什么两个打印的值不同?第一个给我 x=5,第二个给我 x=0。
【问题讨论】:
你能举一个可运行的例子吗?您使用的是哪个编译器?理想情况下,两者都应该打印 5。 Push_back 将对推送的对象进行复制,默认的复制构造函数对源对象进行按位复制。可能是一些编译器优化在这里发挥作用。在这里查看ideone.com/azrCfy。他们正在打印相同的值。 “为什么两个打印有不同的值” - 他们没有,See it live,并提供工具链信息。 找到了错误的家伙。在我的复制构造函数中,我忘记包含变量 x。非常感谢 【参考方案1】:如果您提供了复制构造函数,请确保正确实现它。我的错误在那里。
【讨论】:
以上是关于如何正确 push_back 一个对象?的主要内容,如果未能解决你的问题,请参考以下文章