所以我正在尝试实现包含静态数组的模板类,并且我想使用 const int size 作为参数,但实现此类的唯一方法是使用枚举技术来创建这样的数组。
template<class T>
class Stack
{
private:
const int SIZE = 100;
T data[SIZE];
public:
};
template<class T>
class StackTemplate {
enum {ssize = 100};
T stack[ssize];
int top;
public:
};
第一个实现会导致错误,而第二个实现则很好。 有没有可能使用 const int 来实现它?
如果我尝试使用 const int 而不是 enum,则会收到此错误“C2597 非法引用非静态成员 'Stack::SIZE' TheRevision”。
编译器暗示了一个解决方案:只需制作
SIZE
static
:
template<class T>
class Stack
{
private:
static const int SIZE = 100;
T data[SIZE];
public:
};
更好的是,做到了
static constexpr int SIZE = 100;
或者,也许更好,将
SIZE
作为模板参数:
template<class T, size_t SIZE = 100>
class Stack
{
private:
T data[SIZE];
public:
};