Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2014, 19:19   #1
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию Ошибка с4996

Track.h
Код:
#include <iostream>

class Track{							 //Класс "Track"
public:
	Track();	
	Track(int, char *, char *, int);	               
	Track(const Track&tr);						  
	~Track();										         
	int getNumber();
	int getType();
	int getName();
	int getStatus();                     
	int setNumber(int);
	void setType(char *);
	void setName(char *);
	int setStatus(int);				
	void setTrack();
	int getTrack();										  
private:
	int Number;				   //Номер песни
	char *Type;		          //Тип носителя
	char *Name;		         //Название песни
	int Status;				//Статус песни 
};
Track.cpp
Код:
#include "Track.h"
#include <iostream>
#include<cstring>
using namespace std;
Track::Track()
{
	Number = 0;
	setType("CD");
	setName("Actor – Name");
	Status = 0;
	std::cout << "Construct bez Param" << std::endl;
}

Track::Track(int newNumber, char *newType, char *newName, int newStatus)
{
	Number = newNumber;
	setType(newType);
	setName(newName);
	Status = newStatus;
	std::cout << "Construct s Parametr" << std::endl;
}

Track::Track(const Track&tr)
{
	Number = tr.Number;
	setType(tr.Type);
	setName(tr.Name);
	Status = tr.Status;
	std::cout << "Construct Copy\n" << std::endl;
}

Track::~Track()
{
	delete[]Type;
	delete[]Name;
}

int Track::getType()
{
	return *Type;
}

int Track::getName()
{
	return *Name;
}

int Track::setNumber(int Number)
{
	this->Number = Number;
	return 0;
}
void Track::setType(char *_Type)
{
	if ( Type != NULL)
	{
		delete Type;
	}
	else
	{	
		int len = strlen(_Type) + 1;
		Type = new char[len];
		strcpy(Type, _Type);
		
	}
}
void Track::setName(char *_Name)
{
	if (Type != NULL)
	{
		delete Name;
	}
	else
	{
		int len = strlen(_Name) + 1;
		Name = new char[len];
		strcpy(Name, _Name);
	}
}

...
1> error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> see declaration of 'strcpy'

Ошибка выводит в методах setName и SetType... как исправить?

Последний раз редактировалось doss; 16.11.2014 в 19:36.
doss вне форума Ответить с цитированием
Старый 16.11.2014, 20:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так написано же: Не юзать strcpy() поскольку она небезопасна. Вместо этого юзать strcpy_s(), в которой уязвимость нарушения стека исправлена.
Советовать включить _CRT_SECURE_NO_WARNINGS не буду, ибо это сооружение костылей.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2014, 20:12   #3
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так написано же: Не юзать strcpy() поскольку она небезопасна. Вместо этого юзать strcpy_s(), в которой уязвимость нарушения стека исправлена.
Советовать включить _CRT_SECURE_NO_WARNINGS не буду, ибо это сооружение костылей.
Я заменил на "strcpy_s()", так ругается: error C2660: 'strcpy_s' : function does not take 2 arguments

Код:
void Track::setType(char *_Type)
{
	if ( Type != NULL)
	{
		delete Type;
	}
	else
	{	
		int len = strlen(_Type) + 1;
		Type = new char[len];
		strcpy_s(Type, _Type);
		
	}
}
Может подскажешь, как бы исправить код.. а то, когда подставил strcpy_s, то вывело вида: "Не возможно инициализировать беск кол-во функции "strcpy_s""

Последний раз редактировалось Stilet; 17.11.2014 в 08:10.
doss вне форума Ответить с цитированием
Старый 17.11.2014, 08:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Текст ошибки на аглицком или ее скрин в студию. А так же в студию полный код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2014, 08:58   #5
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Текст ошибки на аглицком или ее скрин в студию. А так же в студию полный код.
Тут код
Вложение 71205

Ошибка: Новый рисунок (1).jpg

Последний раз редактировалось doss; 17.11.2014 в 09:03.
doss вне форума Ответить с цитированием
Старый 17.11.2014, 10:51   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так функция то принимает три параметра )
http://msdn.microsoft.com/ru-ru/library/td1esda9.aspx
Длину строки еще нужно указывать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2014, 15:03   #7
doss
Пользователь
 
Регистрация: 05.03.2013
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так функция то принимает три параметра )
http://msdn.microsoft.com/ru-ru/library/td1esda9.aspx
Длину строки еще нужно указывать.
Вот что вывело..
Новый рисунок (2).jpg

Как я понял, то ошибка в этом методе (вместо Name, ввел *Name и ошибка та исчезла, но все еще ругается, когда присваиваю определенные значения):
Цитата:
void Track::setTrack()
{
int Status = 0;
int Number = 2;
std::cout <<"Введите название песни:" << std::endl;
std::cin >> Name;
std::cout <<"Введите тип носителя:"<< std::endl;
std::cin >> Type;
}
Подскажите, как откорректировать код..

Последний раз редактировалось doss; 17.11.2014 в 16:24.
doss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44