类C ++中数组元素的Getter和Setter

时间:2018-08-06 22:10:52

标签: c++ arrays operators

我有一个类Matrix4f,它有一个名为elements的浮点数组。我需要对这些elements进行一些操作,然后这样做:

float* Matrix4f::operator[](int index)
{
    if (index < 0 || index > MAX_MATRIX_SIZE - 1)
        return NULL;

    return &elements[index];
}

然后我通过以下方式致电运营商:

*Matrix[index] = 2;

我想使用此运算符而不使用*取消引用指针以获取和设置值。所以我想要的像这样:

Matrix[index] = 2;
float someValue = Matrix[index] * cos(angle);

我该如何实现?

1 个答案:

答案 0 :(得分:2)

您应该返回引用而不是指针,这将消除取消引用访问值的需要。看起来像这样:

float& Matrix4f::operator[](int index)
{
    return elements[index];
}

但是,这将使边界检查变为静音,并且您将不得不添加其他机制,例如断言。例如,您可以添加

 assert(index >= 0 && index < MAX_MATRIX_SIZE);

确保您不会超出范围。您也可以抛出异常,或者对您的情况来说似乎是个好主意。