gpt4 book ai didi

c++ - 尝试创建大小未知的模板类的二维数组 (C++)

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:20 26 4
gpt4 key购买 nike

我有一个带有成员变量的类:

T** board

这应该代表游戏板上的单元格,其中每个单元格都是 T 类型,这是一个抽象类。棋盘的大小是在运行时确定的(因此是指针而不是数组声明)。

在同一个类的构造函数中,我尝试初始化组成棋盘的数组:

template<class T, class J, const int X, const int Y>
Gameboard<T,J,X,Y>::Gameboard() {
board = new T[X];
for (int i = 0; i < X; i++) {
board[i] = new T[Y];
}
}

但是,我收到以下错误:

In file included from main.cpp:17:
./Gameboard.h:40:17: error: allocating an object of abstract class type 'Tile'
board = new T[X];
In file included from main.cpp:17:
./Gameboard.h:42:24: error: allocating an object of abstract class type 'Tile'
board[i] = new T[Y];

我应该怎么做才能正确创建二维数组?

最佳答案

一般来说,我会采用的方法是制作一个 2D std::vector。如果你真的想确保长度在编译时是固定的,那么你可以使用 std::array为此:

#include <array>
template<class T, class J, const int X, const int Y>
class Gameboard{

std::array< std::array<T, Y>, X> board;
}

这应该默认初始化所有元素。如果这不能满足您的要求,那么您可以根据需要相当轻松地编写自己的初始化。

关于c++ - 尝试创建大小未知的模板类的二维数组 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205993/

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