gpt4 book ai didi

c++ - 在模板类中初始化 C++ 数组成员

转载 作者:太空狗 更新时间:2023-10-29 23:05:59 25 4
gpt4 key购买 nike

我需要实现一个在访问底层 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];
};

而不是 bool a[3]; , 现在我写 SafeArray<bool, 3> a; .

我如何支持数组初始化,如 bool b[3] = {false}; ?我的意思是我应该怎么做才能得到 b.m_data[] = {false, false, false}SafeArray<bool, 3> b; 之后建成了吗?

我想我应该给 SafeArray 添加一个构造函数,但是构造函数的主体是什么?模板参数T可以是任何东西,不一定bool .我使用的是 C++11 之前的版本。

最佳答案

I mean what should I to do to get b.m_data[] = {false, false, false} after SafeArray<bool, 3> b; has been constructed?

我不确定我是否正确理解了你的问题,但如果我理解了,那么你需要做的就是编写一个默认构造函数来初始化你的数组:

SafeArray() : m_data()
{
}

完整代码:

template <typename T, int N> class SafeArray
{
public:
SafeArray() : m_data()
{
}
T &operator[](int index)
{
assert(0 <= index && index < N);
return m_data[index];
}
private:
T m_data[N];
};

还有一个 live example .

关于c++ - 在模板类中初始化 C++ 数组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232890/

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