QUOTE(Hyper @ 10 Jan, 2009 - 07:17 AM)

QUOTE(Bench @ 8 Jan, 2009 - 11:43 AM)

(I can't see any reason why you would need an array of pointers)
I'll assume you mean in general (not his specific case) - This is why:
No, my reply was very specifically directed to the problem posed by the OP. However, even if we're talking in more general terms I would have to disagree on your rationale behind using an array of pointer-to-char in C++ (The OP was asking about C++).
Use of
char[] is considered "bad" - the standard string type is far safer, more idiomatic, and more flexible. The use of arrays of any type are also generally considered "bad", since STL or boost containers are usually better for largely the same reasons. There are situations when raw arrays and pointers are unavoidable, but those circumstances are generally exceptional or can have their impact strictly limited to a small part of a program where they can't do much damage.
Here's one situation where arrays are currently unavoidable - as an initialiser for an STL container object (At least until C++0x when array initialisers will be granted more power)
cpp
const char* init[] = "Broken Sword",
"Cracked Sword",
"Short Sword",
"Sword",
"Long Sword" };
std::vector< std::string > GameItem( init, init + sizeof(init)/sizeof(init[0]) );
In general, it would be hoped that
init would be ignored throughout the rest of the program, on the grounds that
GameItem caters for its functionality, at no additional cost, but removes any concerns about how the data is represented internally. (Though depending on exactly what GameItem is to be used for, a different STL container might be better)
There are no "never" or "always" rules in C++, and there will inevitably be some situations where
char* [] is the 'best' solution to a problem (such as backward compatibility to legacy code), but as a matter of course, its best to avoid whenever possible.