我尝试到处寻找,但因为这是一个令人困惑的问题,我无法找到我想要的东西。我正在尝试创建函数/方法,但我不知道如何指定其返回类型,应该是:
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的情况下做到这一点。
答案 0 :(得分:2)
你应该总是输入像这样的复杂的返回类型,而不是要求读者解开它们。 (或重新设计,所以你没有复杂的类型!)
但你可以按照这种模式。要声明此类型的变量,您可以执行
double (*var)[3];
并且为了使它成为一种功能,你只需将通常的装饰放在名字旁边的通常位置,尽管看起来很可怕。例如使用名为int
的{{1}}参数:
z
顺便说一句,cdecl一旦你学会了语言,就会为你做到这一点。
答案 1 :(得分:0)
这是非常奇怪的语法:
double (*foo(void))[3]
{
static double f[3][3];
return f;
}