【发布时间】:2011-08-16 12:55:47
【问题描述】:
我正在使用固定数组编写 FixedSizeList 类。我对固定大小的模板参数有疑问,我正在尝试了解我的解决方案是否正确以及如何解决我的问题。
基本上,这是我班级的骨架:
#pragma once
template <typename T, unsigned int N>
class SListFixed
{
public:
SListFixed();
private:
template <typename T>
struct Node
{
Node(T value)
:element(value), nextElement(0)
{
}
T element;
int nextElement;
};
Node m_data[N];
int m_head;
int m_tail;
size_t m_elementCounter;
};
第一个问题是关于这个结构的正确性。然后我想了解为什么这段代码无法编译。我应该将 m_data 设为指针并将其分配到堆栈上吗?
谢谢。
【问题讨论】:
-
您收到的编译器错误消息是什么?
-
@Oli Charlesworth:错误 C2148:数组的总大小不得超过 0x7fffffff 字节。
-
@enigma:那么你需要展示你正在实例化这个模板......
-
@Oli Charlesworth:例如,如果我调用 SListFixed
。或者你的意思是构造函数的实现? -
您的 Node 对象无法知道它属于哪个容器,因此下一个元素可能无法工作。还有,为什么?如果你想要一个链表,你不希望它由一个数组支持。这就是向量的用途。