我的问题很简单,类的构造函数没有使用 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
工作?
如果您需要任何进一步的详细信息,我很乐意提供。
最佳答案
在第二种情况下,您正在构造一个对象并在 vector 中复制构造它。如果您想直接在 vector 内部构造,我建议使用不带参数的 emplace_back
:
v.emplace_back();
关于c++ - 用户定义类的构造函数不适用于 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531541/