每个人,
我正在用C ++编写一个用于计算空间中的点的类。我正在设计这个类独立于应用程序,所以基本上我想要的 -
使用输入参数初始化对象 - >计算值 - >检索计算出的数组
我更喜欢使用类似C的数组(不是std::array
)。我正在编写getter函数 -
// The definition of the ctrlpoints array
GLfloat ctrlpoints[4][4][3];
void GlCircle::getControlPoints(GLfloat* controlPoints) {
std::copy(std::begin(ctrlpoints), std::end(ctrlpoints), std::begin(controlPoints));
}
基本上它应该将ctrlpoints
数组中的所有值复制到controlPoints
目标数组。当然编译器不允许我这样做(它不像std::begin(controlPoints)
的类型)。也许有人可以提出一个想法,我该如何返回数组的副本?也许这个想法可以通过其他方式实现,请告诉我。
提前致谢。
答案 0 :(得分:3)
void GlCircle::getControlPoints(GLfloat* controlPoints) {
std::copy(std::begin(ctrlpoints), std::end(ctrlpoints), std::begin(controlPoints));
}
不起作用,因为std::begin(ctrlpoints)
和std::end(ctrlpoints)
可用于迭代3D数组的2D数组,它不会自动展平3D数组,因此您可以将其视为一维数组
您可以使用三个for
循环将成员变量中的数据传递给输出参数。
void GlCircle::getControlPoints(GLfloat* controlPoints) {
int index = 0;
for ( int i = 0; i < 4; ++i )
{
for ( int j = 0; j < 4; ++j )
{
for ( int k = 0; k < 3; ++k )
{
controlPoints[index++] = ctrlpoints[i][j][k];
}
}
}
}