我来自java背景,我正在尝试用QT学习C ++,试图制作一个tic tac toe游戏。我在初始化某个类中的对象时遇到问题:我希望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
这是MainWindow类
#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的成员。
关于我接下来应该做什么的任何迹象?我可以直接在MainWindow定义中初始化Player吗?
答案 0 :(得分:2)
问题可能在于您将aPlayer成员变量声明为Player对象,但是将其初始化为好像它是指向Player对象的指针。您应该将其声明为指针:
Player *aPlayer;
或在MainWindow类的构造函数中将其初始化为:
MainWindow::MainWindow(QWidget *parent)
:
QMainWindow(parent),
aPlayer("X")
{}