我想创建一个QAction对象向量,我编写了以下代码:
std::vector<QAction> test;
for (quint16 tt = 0; tt < 5; tt++)
{
test.push_back(QAction(this));
}
Run Code Online (Sandbox Code Playgroud)
编译这个显示错误:
错误C2248:'QAction :: QAction':无法访问类'QAction'中声明的私有成员
但是,如果我创建这样的QAction对象,它可以正常工作:
QAction test2(this);
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我的代码中的错误?
QAction继承QObject,因此不可复制.所需的复制构造函数std::vector是私有且不可访问的.
第二种情况有效,因为不涉及复制.
使用std::vector<QAction *>和new QAction(this)替代.或者您可以使用QList<QAction>哪个将起作用,因为在内部它将隐式使用指针.