【发布时间】:2017-11-15 19:47:47
【问题描述】:
我的问题很简单,类的构造函数不能使用std::vector。
class my_class
{
public:
my_class() { std::cout << "my_class constructed\n"; }
};
int main()
{
std::vector <my_class> v;
}
程序没有输出任何东西,尽管它应该输出my_class constructed。然后我假设构造函数适用于vector 的每个元素,所以我这样做了:
class my_class
{
public:
my_class() { std::cout << "my_class constructed"; }
};
int main()
{
my_class object;
std::vector <my_class> v;
v.push_back( object );
}
此代码输出:
my_class constructed
这个构造发生是因为my_class 对象,而不是因为使用push_back()。
如何使构造函数为std::vector 工作?
如果您需要任何进一步的细节,我很乐意提供。
【问题讨论】:
-
提示:也检测复制构造函数。
-
神圣的三位一体,或者如果那不是你的东西 - 三法则。
-
@DeiDei 或5的规则。
-
提示:第一个,检查
v.size()。对于第二个,请尝试v.emplace_back()。
标签: c++ class vector constructor