C++类在另一个类中初始化,出现错误

C++ Class initialization within another class, getting error

本文关键字:错误 另一个 C++ 初始化      更新时间:2023-10-16

我有java背景,我正在尝试用QT学习C++,试图制作一个井字游戏。我在初始化某个类中的对象时遇到了问题:我希望MainWindow类有一个Player实例,并通过调用它的构造函数来初始化Player,但我不理解错误

#ifndef PLAYER_H
#define PLAYER_H
#include "board.h"
#include <qstring.h>
class Player
{
public:
    QString token;
    Player(QString);
    void jouerCoup(int,int, Board&);
};
#endif // PLAYER_H

这是主窗口类

#include <qstring.h>
#include "player.h"
#include "board.h"
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    Player aPlayer;
private:
    Ui::MainWindow *ui;
private slots:
     void buttonHandle();
};
#endif // MAINWINDOW_H

在MainWindow.cpp中,我尝试了这个

aPLayer = new Player("X");

我得到这个错误:

../tictactoe/mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)':
../tictactoe/mainwindow.cpp:6:26: error: no matching function for call to 'Player::Player()'
 ui(new Ui::MainWindow)

我尝试使QString可变,我在Player.cpp中也有一个构造函数,它接受QString并将其分配给Player的成员。

有没有迹象表明我下一步该做什么?我可以直接在主窗口定义中初始化播放器吗?

问题可能是您将aPlayer成员变量声明为Player对象,但您将其初始化为指向Player对象的指针。您应该将其声明为指针:

Player *aPlayer;

或在MainWindow类构造函数中将其初始化为:

MainWindow::MainWindow(QWidget *parent)
    :
        QMainWindow(parent),
        aPlayer("X")
{}
相关文章: