For your question as asked
// in .h
class Foo
{
private:
char charArray[32];
public:
const char *getCharArray() const;
};
// in .cpp
// include the header!
const char *Foo::getCharArray() const
{
return charArray;
}
Bear in mind that the above returns a pointer to private data of the class Foo (rather than a copy of the array). The const qualifiers prevent the caller from (deliberately or accidentally) using the returned pointer to manipulate private data of class Foo.
However, your approach (using a raw array of char in a class) is considered a poor approach in C++. It tends to be harder to use too.
A better approach would be to use a standard container rather than a raw array.
// in .h
#include <array> // C++11 and later
class Foo
{
private:
std::array<char, 32> charArray;
public:
std::array<char, 32> getCharArray() const;
};
// in .cpp
// include the header!
std::array<char, 3> Foo::getCharArray() const
{
return charArray;
}
In this approach, the caller of Foo::getCharArray() receives a COPY of the entire array, rather than a pointer or reference to private data of class Foo. The caller can safely update the array it receives, and then later provide it back to class Foo (e.g. via a setter). Whereas, with using a pointer and a raw array, more gymnastics is needed to achieve a similar effect.
Optionally, a const reference to the std::array<char, 3> can be returned in the above, which can avoid some unnecessary copying of complete objects.