【问题标题】:allocate memory to unknown type c++将内存分配给未知类型 C++
【发布时间】: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-&gt;_board[i][j])),它将返回一个(King)类型(例如),我将能够为它分配内存?

谢谢。

【问题讨论】:

  • 还可以考虑使用std::unique_ptr 而不是原始指针。
  • 不要使用手动内存管理。使用智能指针。不要使用原始 C 数组。使用std::vectorstd::array

标签: c++ arrays pointers


【解决方案1】:

你可以使用虚函数。例如,

class Piece
{
public:
    virtual Piece* clone() = 0;
};

class King : public Piece
{
public:
    virtual Piece* clone()
    {
        return new King(*this);
    }
};

然后用other-&gt;_board[i][j]-&gt;clone()进行深拷贝。

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 2020-11-02
    • 2021-08-30
    • 2021-10-19
    • 1970-01-01
    • 2019-12-10
    • 2020-04-06
    • 1970-01-01
    相关资源
    最近更新 更多