gpt4 book ai didi

c++ - 无法指定 vector 的初始大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:11 24 4
gpt4 key购买 nike

我有一个名为 ChessBoard 的类,其中一个成员变量是

std::vector<ChessPiece *> pieces(16);

这给我一个“需要类型说明符”的错误。 ChessPiece 的默认构造函数是私有(private)的。但是,如果我在函数中编写相同的语句,它会完美地工作(即片段的初始大小为 16)。为什么指定成员变量的初始大小时会报错?谢谢!

中南合作:

class ChessPiece {

ChessPiece();

public:
ChessPiece(int value) { std::cout << value << std::endl; }
};

class ChessBoard {

ChessBoard();
std::vector<ChessPiece *> pieces(16); // Error: expected a type specifier

public:
ChessBoard(int value) { std::cout << value << std::endl; }
};

int main(int argc, char*argv[]) {

std::vector<ChessPiece *> pieces(16);
std::cout << pieces.size() << std::endl; // prints 16
std::cin.get();
return 0;
}

最佳答案

数据成员就地初始化所需的语法不允许使用非成员常用的() 初始化语法。您可以改用此语法:

std::vector<ChessPiece*> pieces = std::vector<ChessPiece*>(16);

关于c++ - 无法指定 vector 的初始大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768276/

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