0
嗨我有一个问题推回对象的对象的向量。如何正确push_back对象?
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将创建推送对象的副本,并且默认的拷贝构造函数创建源对象的按位副本。可能会在这里玩一些编译器优化。在这里检查http://ideone.com/azrCfy。他们正在打印相同的价值。 –
“为什么这两个印刷品有不同的价值” - 他们没有,[**看到它现场**](http://ideone.com/GbnzXb),并提供工具链信息。 – WhozCraig
找到了bug家伙。在我的拷贝构造函数中,我忘记了包含变量x。非常感谢你 – user4168715