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

时间:2015-03-20 23:34:26

标签: c++ arrays c++11

我尝试到处寻找,但因为这是一个令人困惑的问题,我无法找到我想要的东西。我正在尝试创建函数/方法,但我不知道如何指定其返回类型,应该是:

double(*)[3]

我希望能够使用像这样的查询:

double R[3][3];
query ( &output, R );

但是我有一个向量R[3][3]而不是std::vector<double> R_vect (9);,我这样做了:

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

这是一个烂摊子,所以我想实现一个让它可读的功能,比如说:

ReturnType Cast ( const std::vector<double>& R_vect ) {
  return reinterpret_cast<double(*)[3]> (R_vect.data());
}

但我无法指定返回类型。 我使用了typedef,它可以工作:

typedef double DesiredCast[3];
DesiredCast* Cast ( ... ) { ... }

但我仍然很好奇如何在没有typedef的情况下做到这一点。

2 个答案:

答案 0 :(得分:2)

你应该总是输入像这样的复杂的返回类型,而不是要求读者解开它们。 (或重新设计,所以你没有复杂的类型!)

但你可以按照这种模式。要声明此类型的变量,您可以执行

double (*var)[3];

并且为了使它成为一种功能,你只需将通常的装饰放在名字旁边的通常位置,尽管看起来很可怕。例如使用名为int的{​​{1}}参数:

z

顺便说一句,cdecl一旦你学会了语言,就会为你做到这一点。

答案 1 :(得分:0)

这是非常奇怪的语法:

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

  return f;
}