【发布时间】:2022-01-15 19:20:42
【问题描述】:
我正在用 cpp 做一个国际象棋项目。
我的棋盘是一个指向 Piece 的指针矩阵,当我构建它时,我将内存分配给不同类型的棋子(Rook、King、Bishop ...)。
(例如:this->_board[i][j] = new King())
我想深拷贝电路板。 我的想法是遍历板,并且对于每一块我都会为该块的类型分配新的内存。 我尝试了什么:
for (int i = 0; i < NUM_ROWS; i++)
{
for (int j = 0; j < NUM_COLUMN; j++)
{
if (this->_board[i][j] != nullptr)
{
this->_board[i][j] = new typeid(*(other->_board[i][j]));
}
}
}
我可以使用什么命令来代替 typeid(*(other->_board[i][j])),它将返回一个(King)类型(例如),我将能够为它分配内存?
谢谢。
【问题讨论】:
-
还可以考虑使用
std::unique_ptr而不是原始指针。 -
不要使用手动内存管理。使用智能指针。不要使用原始 C 数组。使用
std::vector或std::array。