我需要实现一个安全的数组类,控制访问底层C数组时的索引:
template <typename T, int N> class SafeArray
{
public:
T &operator[](int index)
{
assert(0 <= index && index < N);
return m_data[index];
}
private:
T m_data[N];
};
现在我写的是SafeArray<bool, 3> a;
,而不是bool a[3];
。
如何支持数组初始化,例如bool b[3] = {false};
?我的意思是,在构造SafeArray<bool, 3> b;
之后,我应该做什么才能得到b.m_data[] = {false, false, false}
?
我想我应该向SafeArray
添加一个构造函数,但是那个构造函数的具体内容是什么呢?模板参数T
可以是任何类型,不一定是bool
。我正在使用C++11之前的版本。