2015-04-26 3 views
-4

У меня есть пользовательский класс, один из членов которого - тип char*. Когда я пытаюсь инициализировать его в конструкторе я получаю сообщение об ошибке говорящее error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.Проблема с функцией strcpy

Однако, когда я изменил STRCPY к strcpy_s, было бы еще дать следующую ошибку IntelliSense: no instance of overloaded function "strcpy_s" matches the argument list argument types are: (char *, char *)

Скажем Student класс и char* name; один из данных members.So, мой конструктор, как:

Student (char* s = NULL) { 
    if (s != NULL) { 
     name = new char[strlen(s) + 1]; 
     //strcpy(name,s); 
     strcpy_s(name,s); 
    } 

} 

ответ

4

это потому, что strcpy_s требуется дополнительный параметр, чтобы указать, сколько байт для копирования.

Смотрите здесь: http://www.cplusplus.com/forum/beginner/118771/

+0

Таким образом, если количество байт в переменной, как я делаю это в данном случае? –

+0

Могу ли я ввести произвольный максимальный размер, скажем, 100 как второй аргумент? –

+0

Я этого не понимаю. Может кто-то прояснить? –

Смежные вопросы