结构错误"uninitialized reference member"

struct error "uninitialized reference member"

本文关键字:member reference uninitialized 结构 错误      更新时间:2023-10-16

im是noob,尤其是在c++中。

我在使用要在某些函数中使用的结构时遇到了一些问题。

我在这里查看了关于Header文件和.cpp中的结构的其他答案,但并没有真正让它发挥作用。

my.h文件:

namespace game {
class CPlayer{
        struct GameData{
        int mBoard[8][8];
        CBoard &pBoard;
    };
public:
    CMove Play(const CBoard &pBoard,const CDeadline &pDue);
private:
    int GainsFromMoves(struct GameData gameData);

等等。。。。。

然后在我的.cc文件中,我试图使用以下数据:

CMove CPlayer::Play(const CBoard &pBoard,const CDeadline &pDue)
{
     GameData gameData;
     gameData.pBoard = pBoard;

等等。。。

在我试图声明GameData的地方,我得到了一个错误uninitialized reference member in ‘struct game::CPlayer::GameData’

后来尝试使用GainsFromMoves函数时,我也遇到了一些错误。

int GainsFromMoves(GameData gameData){
 int test = 0;
 return test;
}
error: Multiple markers at this line
    - expected ‘,’ or ‘;’ before ‘{’ token
    - ‘GameData’ was not declared in this 
     scope

我意识到我可能犯了一些非常愚蠢的错误,但是,如果能得到一些指导,我会非常高兴。

好的,首先,您需要CMoveCBoardCDeadline的声明。我添加了一些伪代码来修复其他问题:

namespace game {
struct CBoard {};
struct CDeadline {};
struct CMove {};
...

然后,您的结构体CPlayer::GameData需要初始化它的CBoard引用,该引用应该是const:

class CPlayer{
        struct GameData
        {
          GameData(const CBoard& board) : pBoard(board) {}
          int mBoard[8][8];
          const CBoard &pBoard;
        };
public:
    CMove Play(const CBoard &pBoard,const CDeadline &pDue);
private:
    int GainsFromMoves(struct GameData gameData);
};

接下来,在.cc文件中,定义成员函数时需要名称空间和类名:

namespace game
{
CMove CPlayer::Play(const CBoard &pBoard,const CDeadline &pDue)
{
     GameData gameData(pBoard);
     return CMove();
}
int CPlayer::GainsFromMoves(GameData gameData){
  int test = 0;
 return test;
}
} // namespace game

这消除了错误,至少有了这个简单的主:

int main()
{
  game::CBoard b;
  game::CDeadline d;
  game::CPlayer p;
  p.Play(b, d);
}
相关文章: