在C++中返回一个float数组

ing*_*.am 5 c++ arrays floating-point matrix

我目前在C++中有一个4x4矩阵类,我将每个值存储为一个浮点数:

Matrix4d::Matrix4d(const float& m00, const float& m01, const float& m02, const float& m03,
                   const float& m10, const float& m11, const float& m12, const float& m13,
                   const float& m20, const float& m21, const float& m22, const float& m23,
                   const float& m30, const float& m31, const float& m32, const float& m33)
{
    _m00 = m00;
    _m01 = m01;
    _m02 = m02;
    _m03 = m03;
    _m10 = m10;
    _m11 = m11;
    _m12 = m12;
    _m13 = m13;
    _m20 = m20;
    _m21 = m21;
    _m22 = m22;
    _m23 = m23;
    _m30 = m30;
    _m31 = m31;
    _m32 = m32;
    _m33 = m33;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何返回此数据的float数组?我在类中创建数组没有问题,例如:

float arrayToReturn[16] = { m00, m01, m02, m03, ... m33 };
Run Code Online (Sandbox Code Playgroud)

但是我不能从课堂上返回这个值.我已经读过关于返回指向数组的指针,但是没有运气.

the*_*ess 3

如果您的内部数组如下所示,这将起作用float array[4][4]

float** Matrix4d::getMatrix();
Run Code Online (Sandbox Code Playgroud)

如果您的内部数组是一维数组:

float* Matrix4d::getMatrix();
Run Code Online (Sandbox Code Playgroud)

但这两种情况都会将类的内部工作原理暴露给外界,从而使您的代码更不安全且更难以维护。

最好为()Matrix4d 类创建一个复制构造函数、一个运算符和一个赋值运算符,然后将其传递出去。由于内存管理不良或数据损坏而出现运行时错误的可能性较小。

你的()操作符看起来像这样:

float& operator()( unsigned int xIndex, unsigned int yIndex )
{
  //return the right attribute
}
Run Code Online (Sandbox Code Playgroud)

您可以这样称呼它来设置值:

aMatrix(0,0) = 2.0;
Run Code Online (Sandbox Code Playgroud)

或用于检索:

float attributeCopy = aMatrix(0,0);
Run Code Online (Sandbox Code Playgroud)

它是双向的。

编辑:忘记了[]运算符只接受一个参数。将运算符更改为()运算符,也称为函数运算符。