2
所以我有这样的代码行:的std ::对被调用默认的构造函数为其成员之一
statesArray.push_back(std::pair<States, StateSettings>(States::funMode, StateSettings(1, 2, 3, 4, 5, 6)));
statesArray
是QVector<std::pair<States, StateSettings> >
类型的对象。
StateSettings
类有这两个构造函数(从巫婆默认一个被删除):
StateSettings() = delete;
StateSettings(int a, int b, int c, int d, int e = 0, int f = 0);
编译时,我得到这个错误:
Error 2 error C2280: 'StateSettings::StateSettings(void)' : attempting to reference a deleted function.
为什么std::pair
试图调用已删除默认的构造函数,如果我传递一个对象显式构造一个非默认的构造函数?
我该如何解决这个问题?
从Qt的参考:*“存储在不同的容器中的值可以是任意分配的数据类型,以确定是否符合,类型必须提供一个默认的构造函数,一个拷贝构造函数和一个赋值运算符。“* –
[这可能会在C++ 17中修复。](http://en.cppreference.com/w/cpp/utility/对/对) – dasblinkenlight
@PiotrSkotnicki是的,这是问题所在。切换到'std :: vector',现在一切正常。谢谢。 –