请考虑以下代码:
class class1
{
public:
class1() : _cancel(false) { }
private:
bool _cancel;
}
class class2
{
public:
class1 obj1;
}
class class3
{
void addClass2(class2 _obj2) {
this->obj2.push_back(_obj2);
}
private:
std::vector<class2> _obj2;
}
并将其用于其他文件
void Init()
{
class2 object2;
class3 object3;
object3.addClass2(object2);
}
class1的_cancel
没有初始化为false
但是我在这里解决了这个问题:
//class3
void addClass2(class2 _obj2) {
this->_obj2.push_back(std::move(_obj2));
}
我对此行为感到困惑。关于std::vector::push_back
,我应该知道什么?
修改
很抱歉没有带我的代码副本。 我不在自己的电脑上,因为我没有互联网
在上面的class3实现中是错误的。所以这是新的
//class3
class class3
{
public:
void addClass2(std::vector <class2> _obj) {
this->_obj = _obj;
}
}
答案 0 :(得分:1)
false
编辑我将bool改为int;与bool一起,理论上我们有50%的机会随机选择正确的值;使用int,它仍然可以正确输出42
。
#include <iostream>
#include <vector>
using namespace std;
class class1 {
public:
class1() : _cancel(42) { }
int _cancel;
};
class class2
{
public:
class1 obj1;
};
class class3 {
public:
void addClass2(class2 _obj2) {
this->_obj2.push_back(_obj2);
}
std::vector<class2> _obj2;
};
int main() {
class2 object2;
class3 object3;
object3.addClass2(object2);
cout << object3._obj2[0].obj1._cancel << endl;
}