C ++类初始化在另一个类中,得到错误

时间:2014-10-31 20:44:12

标签: c++ qt constructor

我来自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吗?

1 个答案:

答案 0 :(得分:2)

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

Player *aPlayer;

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

MainWindow::MainWindow(QWidget *parent)
    :
        QMainWindow(parent),
        aPlayer("X")
{}