Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++;_C++_Arrays_C++11 - Fatal编程技术网

C++ 返回指向固定大小数组C++;

C++ 返回指向固定大小数组C++;,c++,arrays,c++11,C++,Arrays,C++11,我试着到处找,但因为这是一个如此复杂的问题,我没能找到我要找的东西。我正在尝试创建函数/方法,但不知道如何指定其返回类型,返回类型应为: double(*)[3] 我希望能够使用如下查询: double R[3][3]; query ( &output, R ); 但是,我没有使用R[3][3],而是使用了一个向量std::vector R\u vect(9)我这样做: query ( &output, reinterpret_cast<double(*)[3]>

我试着到处找,但因为这是一个如此复杂的问题,我没能找到我要找的东西。我正在尝试创建函数/方法,但不知道如何指定其返回类型,返回类型应为:

double(*)[3]
我希望能够使用如下查询:

double R[3][3];
query ( &output, R );
但是,我没有使用
R[3][3]
,而是使用了一个向量
std::vector R\u vect(9)我这样做:

query ( &output, reinterpret_cast<double(*)[3]> (R_vect.data()) );

但我仍然很好奇,没有typedefs怎么做。

这是一种非常奇怪的语法:

double (*foo(void))[3]
{
  static double f[3][3];

  return f;
}

您应该始终键入这样复杂的返回类型,而不是要求读者解开它们。(或者重新设计,这样您就不会有复杂的类型!)

但是你可以按照这个模式。要声明这种类型的变量,您需要

double (*var)[3];
为了使它成为一种功能,你只需在名字旁边的通常位置放上通常的装饰,尽管它看起来很可怕。e、 g.使用名为
z
int
参数:

double (*func(int z))[3]
{
    // ...
}

顺便说一句,一旦你学会了它的语言,我会为你做这件事。

我会返回一个实例,而不是返回一个原始指针。在使用指针或数组或函数的引用时,请始终使用typedefs。如果你不这么做的话,它会很快变得疯狂。有没有关于如何命名这些typedef的建议,以明确它们的用途?谢谢。这就是我要找的。看到语法,我相信我也会坚持使用typedef:D,为了完整起见,下面是一个方法的代码(这也是令人困惑的):
double(*Class::func(void))[3]
double (*var)[3];
double (*func(int z))[3]
{
    // ...
}