Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何处理由类定义的数组数组_C++_Templates - Fatal编程技术网

C++ 如何处理由类定义的数组数组

C++ 如何处理由类定义的数组数组,c++,templates,C++,Templates,我正在编写一个模板数组类。我可以用它来声明这样的事情 Array<int> oneDimenional(5); template <typename T> class Array{ private: int len; T *arr; public: Array() { int len = 0; } Array(int size) { arr = new T[size]; len

我正在编写一个模板数组类。我可以用它来声明这样的事情

Array<int> oneDimenional(5);
template <typename T>

class Array{

private:
    int len;
    T *arr;
public:
    Array() {
        int len = 0;
    }
    Array(int size) {
        arr = new T[size];
        len = size;
    }
    ~Array() {
        delete[] arr;
    }
//...
};
数组一维(5);
但不是这个

Array<Array<Array<Array<Array<Array<Array< int >>>>>>> Craziness(1000);
数组>疯狂度(1000);
我的课是这样开始的

Array<int> oneDimenional(5);
template <typename T>

class Array{

private:
    int len;
    T *arr;
public:
    Array() {
        int len = 0;
    }
    Array(int size) {
        arr = new T[size];
        len = size;
    }
    ~Array() {
        delete[] arr;
    }
//...
};
模板
类数组{
私人:
内伦;
T*arr;
公众:
数组(){
int len=0;
}
数组(整数大小){
arr=新T[尺寸];
len=尺寸;
}
~Array(){
删除[]arr;
}
//...
};
我猜我需要改变我的构造函数

Array<Array<int> > arr(10);
所以你的代码应该是

Array<Array<Array<Array<Array<Array<Array< int > > > > > > > Craziness(1000);
数组>疯狂度(1000);

我能看到的一个问题是,在构造函数中,您执行
int len=0而不是
len=0
,即声明一个新的局部变量,而不是设置成员
len
的值。编译器可能会对此发出警告。(当然,最好使用初始化列表:
Array():len(0),arr(0){}
)您所要求的是不清楚的。我得到的印象是,问题是如何将所有不同的维度传递给内部类型。。。如果是这样,您还应该添加您想要使用的标准版本,因为它在C++11中非常简单,在C++03中更难做到!非常感谢。现在我看到我的错误实际上是由于使用了复制构造函数。(代码没有显示,因为我假设错误)是的,尽管可能值得注意的是,这个问题在C++98/03中存在,但在C++11中不存在。@jogojapan您能解释一下吗?连我都是初学者。[c++11对我来说是新的]哦,只是在c++11中规则被改变了。因此,您可以编写
数组。但你是对的,尽管如此,这可能是OP面临的问题+1.这是正确的!我现在看到我的驱动程序实际上正在这样做,Arrayb(3);(没有输入错误的疯狂)但是我现在看到我的错误实际上可能与使用复制构造函数的另一段代码有关。