构造函数是私有的?

4

C:/Qt/.../mymodel.h:-1: 在成员函数 'void MainWindow::createModel()' 中:

错误:'myModel::myModel(QObject*)' 是私有的

错误:在此上下文中

mymodel.h:

#ifndef MYMODEL_H
#define MYMODEL_H

#include <QStandardItemModel>

class myModel : public QStandardItemModel
{
public:
    Q_OBJECT

    myModel(QObject *parent = 0);
};

#endif // MYMODEL_H

mymodel.cpp:

#include "mymodel.h"

myModel::myModel(QObject *parent) :
    QStandardItemModel(parent)
{

}

mainwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow();

private slots:
    ...

signals:
    ...

private:
    ...
    myModel *model;
};

mainwindow.cpp:

void MainWindow::createModel()
{
    model = new myModel(this);

感谢您的选择。

在这里的文档中:http://doc.trolltech.com/4.5/moc.html#moc 和你的mainwindow.h文件中,我看到Q_OBJECT在public:之前使用。在mymodel.h文件中,你将其放在public:之后。宏是否会重新引入一个private:?尝试将其移动到public:之前,看看是否可以解决你的问题。 - ccoakley
1个回答

4

呵呵。没错。你是对的。如果你看一下 Q_OBJECT 宏,它从 private: 开始。因此构造函数也在私有部分。 - Pie_Jesu
很好。那是我在评论中的猜测。鉴于错误,这似乎是一个合理的猜测。 - ccoakley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接