gpt4 book ai didi

c++ - 构造函数调用其他构造函数

转载 作者:行者123 更新时间:2023-11-30 05:19:34 30 4
gpt4 key购买 nike

我是 cpp 的新手,所以如果这是一个愚蠢的问题,我深表歉意。我创建了一个类并希望它包含在我创建的另一个类中。当我为上面的类创建构造函数时,它创建了一个子类变量,但是它似乎试图调用子类的默认构造函数,而我没有。有没有一种方法可以在不调用构造函数的情况下设置变量?

游戏.hpp

class Game {
private:
char players[2];
char curPlayer;
TTTBoard<TTTBoard<char>> board; <-------
int curBoard[2];
int nextBoard[2];
bool finished;

public:
Game();
const bool isFinished() const;
const char getCurPlayer() const;
const char next();
void setCurBoard(int x, int y);
void printWholeBoard();
void printCurBoard();
void setPos(int x, int y);
};

我认为这是正在发生的事情,因为当我尝试编译时出现以下错误

game.cpp:3:16: error: no matching function for call to ‘TTTBoard<TTTBoard<char> >::TTTBoard()’ Game::Game(void) {

非常感谢任何帮助。谢谢

最佳答案

是的,TTTBoard<TTTBoard<char>>的默认构造函数会在这里被调用。如果没有,则需要使用 member initializer list指定适当的构造函数来初始化成员 board在实现 Game 的构造函数中.

Member initializer list is the place where non-default initialization of these objects can be specified. For members that cannot be default-initialized, such as members of reference and const-qualified types, member initializers must be specified.

例如

class Game {
private:
TTTBoard<TTTBoard<char>> board;

public:
Game() : board(some_arguments) {}
// ~~~~~~~~~~~~~~~~~~~~~~~
};

关于c++ - 构造函数调用其他构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41051991/

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