Я не могу понять в чем моя ошибка. Добавила "_s", не помогает. Появляется другая ошибка: Error C2660: 'strcpy_s': function does not take 2 arguments
public:
TGoods() : year_(0), name_(NULL)
{
}
TGoods(int year, const char *name): year_(year),name_(strcpy_s(new char[strlen(name) + 1], name))
{
}
Во-первых, функция strcpy_s
в С++ может принимать два аргумента только в том случае, если ее первый аргумент - массив. У вас первый аргумент - не массив, а указатель. В такой случае аргументов придется передавать три: дополнительно придется передать размер буфера-приемника. Все это ясно описано в документации к функции strcpy_s
. Неясно, почему вы пользуетесь незнакомой функцией strcpy_s
и при этом даже не пытаетесь почитать документацию.
Во-вторых, использование функции strcpy
формально ошибкой не является. Ваш компилятор сам сказал вам, как отключить это назойливое и странное сообщение об ошибке. Прямо там, в сообщении об ошибке вам сказано, что это можно сделать через определение макроса _CRT_SECURE_NO_DEPRECATE
(и, заодно, _CRT_SECURE_NO_WARNINGS
). Лучше всего это делать глобально, в настройках проекта
Project Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
Ну все верно, на то она и безопасная, чтоб кроме как "куда", еще и проверять "сколько".
В вашем варианте я бы смело использовал strcpy
- и так понятно, что вы выделяете достаточно памяти. Но если нет, то...
name_(nullptr) ...
{
strcpy_s(name_= new char[strlen(name) + 1], strlen(name) + 1, name));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
C++ Builder 2006Имеется БД Access, подключенная к Builder C++ через ADOConnection, ADOTable и DataSource
пытаясь создать функцию которая бы выдавала случайное простое число, я получаю следующие ошибки при компиляции:
Студенческая задачка, дословно звучит так: Разработка программы "Кроссворд"Программа автоматически генерирует кросворд по определенной...