Error C2660: 'strcpy_s': function does not take 2 arguments

197
25 мая 2018, 08:50

Я не могу понять в чем моя ошибка. Добавила "_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))
{
}
Answer 1

Во-первых, функция strcpy_s в С++ может принимать два аргумента только в том случае, если ее первый аргумент - массив. У вас первый аргумент - не массив, а указатель. В такой случае аргументов придется передавать три: дополнительно придется передать размер буфера-приемника. Все это ясно описано в документации к функции strcpy_s. Неясно, почему вы пользуетесь незнакомой функцией strcpy_s и при этом даже не пытаетесь почитать документацию.

Во-вторых, использование функции strcpy формально ошибкой не является. Ваш компилятор сам сказал вам, как отключить это назойливое и странное сообщение об ошибке. Прямо там, в сообщении об ошибке вам сказано, что это можно сделать через определение макроса _CRT_SECURE_NO_DEPRECATE (и, заодно, _CRT_SECURE_NO_WARNINGS). Лучше всего это делать глобально, в настройках проекта

Project Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
Answer 2

Ну все верно, на то она и безопасная, чтоб кроме как "куда", еще и проверять "сколько".

В вашем варианте я бы смело использовал strcpy - и так понятно, что вы выделяете достаточно памяти. Но если нет, то...

name_(nullptr) ...
{
    strcpy_s(name_= new char[strlen(name) + 1], strlen(name) + 1, name));
READ ALSO
Собственная функция вместо ButtonClick

Собственная функция вместо ButtonClick

C++ Builder 2006Имеется БД Access, подключенная к Builder C++ через ADOConnection, ADOTable и DataSource

194
Ошибка с xutility

Ошибка с xutility

пытаясь создать функцию которая бы выдавала случайное простое число, я получаю следующие ошибки при компиляции:

200
Кроссворд на с++

Кроссворд на с++

Студенческая задачка, дословно звучит так: Разработка программы "Кроссворд"Программа автоматически генерирует кросворд по определенной...

275
Кастомизация QMessageBox C++ Qt

Кастомизация QMessageBox C++ Qt

Ранее я задавал вопрос:

189