2014-10-31 109 views
0

我来自java的背景,我正试图学习C++与QT试图做一个tic tac脚趾游戏。我有一个特定的类中初始化对象问题:通过调用它的构造函数我想MainWindow类有一个Player实例并初始化的球员,但我不明白的错误在另一个类中的C++类初始化,出现错误

#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并将其分配给播放器的成员。

任何迹象表明我下一步该做什么?我可以直接在MainWindow定义中初始化播放器吗?

回答

2

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

Player *aPlayer; 

或在主窗口类构造器初始化为:

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