的初始大小我有一個類叫器ChessBoard和成員變量之一是無法指定矢量
std::vector<ChessPiece *> pieces(16);
這是給我一個「預期類型說明符」的錯誤。 ChessPiece的默認構造函數是私有的。但是,如果我在函數內部寫入相同的語句,它可以很好地工作(即初始大小爲16)。爲什麼當我嘗試指定成員變量的初始大小時報告錯誤?謝謝!
SSCCE:
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;
}
您的第一個'ChessBoard'構造函數看起來不正確。也許你的意思是'ChessBoard():件(16){}'? – juanchopanza
@juanchopanza:呃,固定。謝謝 – Brian
我可能是錯的,但不會因爲默認的構造函數無法訪問而導致pieces.resize(16)拋出一個錯誤? – Izaan