我想要创建一个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);有人能指出我代码中的错误吗?
发布于 2017-09-26 10:35:01
QAction继承QObject,因此是不可复制的。std::vector所需的复制构造函数是私有的,不可访问。
第二种方案之所以有效,是因为不涉及复制。
使用std::vector<QAction *>和new QAction(this)代替。或者您可以使用QList<QAction>,因为在内部它将隐式地使用指针。
https://stackoverflow.com/questions/46423998
复制相似问题