我想要一个围绕数组的包装器,例如,它将存储在堆栈中 - 不关心内存释放 - 可以通过大括号列表进行初始化,并且可能可以替换为普通数组的任何位置。然后,我生成了以下代码。现在我想知道,我错过了什么。——那么——这是我想要的吗?
template<class T, size_t size>
struct Array
{
T body[size];
operator T* () { return body; }
};
编辑:
我可能不准确。包装仅用于建筑目的。当位于初始化列表中时(主要),它应用于从大括号列表构造数组。喜欢
class A {
protected: A(int array[])
...
class B : public A {
public: B() :
A( (Array<int, 2>) {{ 1, 2 }} )
...
有一个const
铸造操作符版本的提议。- 我一直在考虑这个,但不确定是否真的需要。虽然const T[]
通过现有运算符隐式进行转换,并且可以通过给定义常量数组T = const ...
,但还有原因吗?