我想知道如何编写返回成员数恒定的数组的函数。这有意义吗? 我知道我可以做这样的事情:
float* WojtekEQgraph::_Wk_N(float k)
{
float comp[2];
comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number
return comp;
}
它返回包含两个成员的数组。但实际上“返回”表示期望指向数组的指针,而不管它有多少成员。 但是如果以某种不可预知的方式会有
float comp[3]
或 float comp[1]
我想要 return comp;
会给我错误。
我该怎么做?
我试过了:
float[2] WojtekEQgraph::_Wk_N(float k)
{
float comp[2];
comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number
return comp;
}
但它不起作用。如有任何帮助,请提前致谢。
最佳答案
如果要返回一个数组对象,C++标准库拼写为std::array
.所以将它应用到你的例子中:
std::array<float, 2> WojtekEQgraph::_Wk_N(float k)
{
std::array<float, 2> comp;
comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number
return comp;
}
会做的。其他优点包括没有悬挂引用和需要处理困惑的内存分配。简短而甜美的聚合。
如果您处理的是复数,还有另一个答案。不要重新发明轮子,使用std::complex
相反。
关于c++ - 返回具有常量成员数的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118987/