Читал немного на моем C ++ и нашел эту статью о RTTI (Идентификация типов времени выполнения):
http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80).aspx. Ну, это еще одна тема :) - Однако я наткнулся на странное высказывание в type_info
-классе, а именно о ::name
-методе. В нем говорится: «Функция-член type_info::name
возвращает const char*
для строки с нулевым символом в конце, представляющей понятное человеку имя типа. Указанная память кэшируется и никогда не должна быть непосредственно освобождена».
Как вы можете реализовать что-то подобное самостоятельно !? Раньше я довольно часто боролся с этой проблемой, так как не хочу создавать новый char
массив для вызывающей стороны, поэтому до сих пор придерживаюсь std::string
.
Итак, ради простоты, скажем, я хочу создать метод, который возвращает "Hello World!"
, назовем его
const char *getHelloString() const;
Лично я бы сделал это как-то так (Псевдо):
const char *getHelloString() const
{
char *returnVal = new char[13];
strcpy("HelloWorld!", returnVal);
return returnVal
}
.. Но это будет означать, что вызывающая сторона должна сделать delete[]
для моего указателя возврата: (
Спасибо заранее