gpt4 book ai didi

c++ - 与另一个类 C++ 共享对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:09 26 4
gpt4 key购买 nike

我有两个类:棋盘类和玩家类。棋盘需要在玩家之间共享。我在播放器 cpp 文件中收到错误提示“‘Player::board’:必须在构造函数基类/成员初始化程序中初始化列表”

这是我的播放器头文件:

class Player {
private:
Board &board;
string name; // I put a reference
};

播放器cpp文件中:

// I pass the board in the board class by refrence but get the above error
Player::Player(string n,Board&b) {
name=n;
board=b;
}

与此同时,我的板类看起来像这样:

class Board {
private:
int** board;
int row;
int column;
};

Board::Board(int r,int c) {
row=r;
column=c;
board=new value*[r];

for(int i=0;i<r;i++) {
board[i] = new value[c];
}
}

最佳答案

您不能推迟初始化引用。正如错误告诉您的那样,您需要在成员初始化列表中对其进行初始化,例如:

Player::Player(string n,Board&b) : board(b) // preferably also ,name(n)
{
// rest of implementation
}

最好在成员初始化列表中也初始化name,通过const引用传递string n,如 const string& n,这样就避免了额外的复制。如果你使用 g++,你可以使用 -Weffc++ 编译器标志,它会给你关于成员列表初始化等的警告。

关于c++ - 与另一个类 C++ 共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com