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

来自accountTab.h的Ui::accountTab

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

class player *user;

它有效

在player.h中,我尝试声明Ui::accountTab类似于player:
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;
};

最佳答案

  • 如果声明变量,则无需使用class关键字。正确的声明是:
    player *user;
    UI::accountTab *tab;
    
  • accountTab类的定义移到其声明的 namespace 中:
    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;
        };
    }
    
  • 使用private slots:和单词QObject似乎不正确。也许只是打印错误,但您应该修复它。
  • 09-07 00:10