【发布时间】:2015-05-24 12:07:25
【问题描述】:
我尝试到处搜索,但因为这是一个如此令人困惑的问题,我无法找到我正在寻找的东西。我正在尝试创建函数/方法,但我不知道如何指定其返回类型,应该是:
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 的情况下做到这一点。
【问题讨论】:
-
我会返回一个 a class 的实例,而不是返回一个原始指针。
-
在使用数组或函数的指针或引用时始终使用 typedef。如果你不这样做,它就会变得如此之快。
-
是否有关于如何命名这些 typedef 以明确其用途的建议?