想象一下下面的场景:

class A
{
    int a[50];
    int* GetAPtr() { return a; };
};
...
A b;
if(b.GetAPtr()[22] == SOME_RANDOM_DEFINE) do_this_and_that();

这种访问方式被认为是不好的做法吗?b.GetAPtr()[22]
为了澄清我的情况:
一。在这种情况下,我不能使用new/malloc,数组必须是静态的
2。这是为了封装使用多个数组的旧C代码,这样做非常方便
三。我知道返回指针可能会返回空指针,我们这里不讨论这个问题

最佳答案

如果您真的需要这样的const表达式,可以将它变成一个函数:

class A
{
    int a[50];
    bool check_this_and_that() { return a[22] == SOME_RANDOM_DEFINE; };
};
...
A b;
if(b.check_this_and_that()) do_this_and_that();

魔法数字一般来说是不好的,但在类逻辑中,它更容易被原谅,外人不必看到这一点。

关于c++ - 在返回指针的Getter上进行数组访问,这是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23237072/

10-13 08:34