What is the significance of the numbers 30, 12, and 4 ? You are using this code in the constructor?
for (int i = 0; i < 30; i++)
name[i] = new char[12 * sizeof(char)];
and that makes no sense. The variable is declared as :
char* name[30];
That is thirty pointers to characters. I seriously doubt that is what you want. You appear to be asking for one string that is the name. Why allocate 12 characters? It would make more sense to declare the name as just a character array like this :
char name[ NameSize + 1 ];
I asked about those three numbers because that is very bad form. Those should be constants. If you use this declaration you need only one constant and you can get rid of the construction and deletion. Since this is C++, it would be best to use a std::string to hold the name. Actually, you don't do anything with the name so you really don't need it at all.
Lastly, calling system should be done only on the rare occasions when no viable alternative is available. This does not qualify. It would be much better to call getchar() or a similar function to wait for a keyboard entry.