【发布时间】:2013-02-15 19:53:08
【问题描述】:
考虑以下代码:
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;
}
}
【问题讨论】:
-
太糟糕了,它不是一个可编译的例子。现在我正在浪费时间将它们合二为一。另外,复制构造函数?
-
对我来说看起来不错;请发布证明它没有被初始化为假的代码。
-
如果您想获得相关答案,请确保阅读this。
-
你是
addClass2的新版本,将向量作为参数,你用class2调用它。这真的是你在做的吗? -
不,应该是
std::vector。我想我应该再重写一次。
标签: c++ visual-c++ c++11 std