Список инициализаторов для const char * const ptr;

0

Может ли кто-нибудь помочь мне написать следующий конструктор, который сделает DEEP COPY

class simple
{
    const char*  const name;
    simple(char *n);
};

Если я попробую:

simple(char *n):name(new char[strlen(n)]) { 
  strcpy(name,n); 
} // it is error
  • 1
    Проще говоря, это очень простой конструктор. Где твоя попытка?
  • 0
    Мне нужно выделить память, в то же время я должен инициализировать ее с предоставленным пользователем. Если я попробую просто (char * n): name (new char [strlen (n)]) {strcpy (name, n); } // это ошибка
Показать ещё 2 комментария
Теги:
const

1 ответ

2
simple::simple(char *n) : name(n) {}

Для глубокой копии вы можете использовать strdup:

simple::simple(char *n) : name(strdup(n)) {}

Или, если у вас нет strdup, вы можете так же легко реализовать его самостоятельно.

  • 0
    В этом случае это будет мелкая копия?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню