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

标签 c++ vector size member

我有一个名为 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/

相关文章:

c++ - munmap_chunk:使用 std::vector 更改数据存储位置时的无效指针

html - CSS 2 div 大小自动相同的高度

c - c中数据类型的大小

c++ - 为什么无法分配给本身缺少复制运算符的对象 vector ?

windows - 如何在 Windows 中拆分大文本文件?

c++ - Qt:将包含二维数组的信号从一个线程传递到另一个线程

c# - HANDLE (IntPtr) 已过时,kernel32.dll,SafeFileHandle 到 IntPtr

c++ - 如何按值返回 `QObject` 派生类?

c++ - 抽象类继承另一个具有相同函数名的抽象类

c++ - 对齐具有 vector 作为成员的结构 (c++)