• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 272
  • Last Modified:

What is the best way to return a class' private character array?

If a class has a private array member, what is the best way to return this?
Currently, I have it returning as const char* so that they may not alter it,
however this requires them to have a const array themselves, and I don't
know that I like that.

I also have tried a static variable as the return instead, however with this I
don't know that I like the memory being held until my application ends.

Then, I know I could return a string, or use new/delete... But at this point
I figured I would just come and get some input on what all of you feel is the
best way to go about doing such a thing.
0
List244
Asked:
List244
1 Solution
 
jkrCommented:
Do you want the array to be modifyable by the callers or do you want to keep the original contents? There are several scenarios, assuming the latter I'd probably pick a std::string to handle that transparently if you wnt the original data in your class to be unchanged, e.g.

#include <string>
using std::string;

class foo {

public:

string get_string () const { return string(m_arr);}

private:

char* m_arr;

};

Thus would allow the caller to fiddle with the data that is returned without changing your original.
0
 
efnCommented:
> ...this requires them to have a const array themselves

Why?  For read access, a client can use the pointer to const char, and to change the string, the client would have to copy it to a non-const array.

For the greatest efficiency, return a pointer to const char.  For the greatest simplicity, convenience, and safety, return a string, as jkr suggested.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now