命名空间中的C ++类不是名称类型

时间:2014-04-20 18:04:15

标签: c++ qt

我有两个文件player.h和accountTab.h 我需要在accountTab.h中引用player.h中的player()类 和 来自accountTab.h的Ui :: accountTab

在mainwindow.h中,我将player()声明为:

class player *user;

并且有效

在player.h中,我尝试声明Ui :: accountTab与播放器相同:

class Ui::accountTab *tab;

但它不起作用。它会引发错误。

  名称空间“Ui”中的

'accountTab'未命名类型        class Ui :: accountTab * tab;

accountTab.h:

#include <QMainWindow>
#include <player.h>

namespace Ui {
class accountTab;
}


class accountTab : public QMainWindow
{
    Q_OBJECT

public:
    explicit accountTab(QWidget *parent = 0);
    class player *user;
    ~accountTab();

private slots:
    void on_cleanZoo_clicked();

    void on_collectStars_clicked();

private:
    Ui::accountTab *ui;
};

2 个答案:

答案 0 :(得分:2)

  1. 如果您声明变量,则无需使用class关键字。正确的声明是:

    player *user;
    UI::accountTab *tab;
    
  2. accountTab类的定义移动到其名称空间中,并声明:

    namespace Ui {
    
        class accountTab : public QMainWindow
        {
    
        public:
            explicit accountTab(QWidget *parent = 0);
            class player *user;
            ~accountTab();
    
        private:
            void on_cleanZoo_clicked();
    
            void on_collectStars_clicked();
    
        private:
            Ui::accountTab *ui;
        };
    }
    
  3. 使用private slots:和单个词QObject似乎不正确。也许这只是一个印刷错误,但你应该修复它。

答案 1 :(得分:-1)

你可以打开.ui文件以确保.xml文件中的类是accountTab(通常,.xml生成的类的名称是&#34; Form&#34 ;,如果你是由Qt设计师设计的)