2015-05-24 54 views
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。

+0

你可以放一个可运行的例子吗?你正在使用哪种编译器?理想情况下,两者都应该打印5。 Push_back将创建推送对象的副本,并且默认的拷贝构造函数创建源对象的按位副本。可能会在这里玩一些编译器优化。在这里检查http://ideone.com/azrCfy。他们正在打印相同的价值。 –

+1

“为什么这两个印刷品有不同的价值” - 他们没有,[**看到它现场**](http://ideone.com/GbnzXb),并提供工具链信息。 – WhozCraig

+0

找到了bug家伙。在我的拷贝构造函数中,我忘记了包含变量x。非常感谢你 – user4168715

回答

0

如果您提供了一个复制构造函数,请确保您正确实施它。我的错误在那里。