C++ 如何在c+中定义此类型+;?
我试着把它当作一个三元组,就像这样:C++ 如何在c+中定义此类型+;?,c++,pointers,typedef,C++,Pointers,Typedef,我试着把它当作一个三元组,就像这样: Foo* (*)[8]? 但是我得到了不匹配的类型,所以我只想定义实际的类型,但不确定符号应该是什么?这是一个固定的6x8指针矩阵 Foo*** = new Foo* [6][8]; 如果是指针矩阵(而不是指向矩阵的指针),请不要new该矩阵。相反,您需要创建Foo的new实例 Foo *mat[6][8]; 答案在问题的第一行 Foo *(*mat)[6][8] = new Foo*[6][8]; 或者,如果要使用typedef using Foo
Foo* (*)[8]?
但是我得到了不匹配的类型,所以我只想定义实际的类型,但不确定符号应该是什么?这是一个固定的6x8指针矩阵
Foo*** = new Foo* [6][8];
如果是指针矩阵(而不是指向矩阵的指针),请不要new
该矩阵。相反,您需要创建Foo
的new
实例
Foo *mat[6][8];
答案在问题的第一行
Foo *(*mat)[6][8] = new Foo*[6][8];
或者,如果要使用typedef
using Foo2D = Foo*(*)[8];
Foo2D ptr = new Foo* [6][8];
但是,不要使用这两种方法中的任何一种。使用
向量
或数组库来处理多维矩阵。您可以这样分解它:
typedef Foo*(*Foo2D)[8];
如果你使用C++ 11,那么我强烈建议使用<代码> STD::数组,6 > < />代码,我还考虑用智能指针类型替换<代码> Foo*<代码>(如<代码> STD::UnQuyJPPT)。如果你看到任何可怕的方括号,就用星号来解决这个问题,直到编译器停止抱怨;但是它说,将Foo*(*)[8]分配给Foo**[8]是不兼容的——不确定表示法
typedef Foo*(*Foo2D)[8];
typedef Foo *FooPtr;
typedef FooPtr FooPtrMatrix[6][8];
FooPtrMatrix *foo = new FooPtrMatrix;