Q:

Array access on a Getter that returns a pointer, is that bad practice? 

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

Is this kind of access considered bad practice?  b.GetAPtr()[22]
To clarify my situation:
1.  I cannot use new/malloc in this case, the array muste be static 
2.  This is meant to encapsulate older C code that uses multiple arrays where this comes extremly handy 
3.  I know that returning a pointer can possibly return a NULL pointer, we do not talk about that issue here

A:

If you really need such const expression you could make it into a function:
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();

magic numbers are bad in general but inside a class logic it's more forgiveable and outsiders don't have to see this.