所以我有以下代码行:
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
传递了一个由一个非默认构造函数显式构造的对象,为什么ojit_code尝试调用已删除的默认构造函数?我该如何解决?
最佳答案
与commented by Piotr Skotnicki一样,值类型存储在QVector
中的Qt Standard specifies和任何其他Qt Generic容器必须:
问题中指定的值类型显然不符合这些条件。
解决该问题的一种可能方法是存储指向值的指针:
QVector<std::pair<States, StateSettings>*> statesArray;