所以我有以下代码行:

statesArray.push_back(std::pair<States, StateSettings>(States::funMode, StateSettings(1, 2, 3, 4, 5, 6)));
statesArrayQVector<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;

09-15 20:47