QAction传染媒介没编译

时间:2017-09-26 10:30:16

标签: c++ qt

我想创建一个QAction个对象的向量,我编写了以下代码:

std::vector<QAction> test;
for (quint16 tt = 0; tt < 5; tt++)
{
   test.push_back(QAction(this));
}

编译它会显示错误:

  

错误C2248:'QAction :: QAction':无法访问类'QAction'中声明的私有成员

但是,如果我像这样创建一个QAction对象,它可以正常工作:

QAction test2(this);

有人可以在我的代码中指出错误吗?

1 个答案:

答案 0 :(得分:5)

QAction继承QObject,因此不可复制。 std::vector所需的复制构造函数是私有且无法访问的。

第二种情况有效,因为不涉及复制。

改为使用std::vector<QAction *>new QAction(this)。或者您可以使用QList<QAction>,这将起作用,因为在内部它会隐式使用指针。