我想创建一个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);
有人可以在我的代码中指出错误吗?
答案 0 :(得分:5)
QAction
继承QObject
,因此不可复制。 std::vector
所需的复制构造函数是私有且无法访问的。
第二种情况有效,因为不涉及复制。
改为使用std::vector<QAction *>
和new QAction(this)
。或者您可以使用QList<QAction>
,这将起作用,因为在内部它会隐式使用指针。