Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383

Ошибки при компиляции класса "Строка". Не могу разобраться

24.09.2018, 12:15. Показов 1541. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Компилятор выдаёт такие вот ошибки. Не могу разобраться.

1>c:\visual c++\ямп №2\ямп №2\string.cpp(16): 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>c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\string .h(133): note: см. объявление "strcpy"
1>c:\visual c++\ямп №2\ямп №2\string.cpp(22): 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>c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\string .h(133): note: см. объявление "strcpy"
1>c:\visual c++\ямп №2\ямп №2\string.cpp(35): 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>c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\string .h(133): note: см. объявление "strcpy"
1>c:\visual c++\ямп №2\ямп №2\string.cpp(36): error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files (x86)\windows kits\10\include\10.0.17134.0\ucrt\string .h(90): note: см. объявление "strcat"

String.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#pragma once
#include <iostream>
#include <cstring>
 
using namespace std;
 
class String
{
protected:
    char* Str;
    int Length;
public:
    String();
    String(const char* ptr);
    String(const String& t);
    String& operator = (String& t);
    String& operator += (const String& t);
    bool operator == (const String& t) const;
    bool operator != (const String& t) const;
    bool is_empty() const;
    const char* getStr() const;
    int getLength() const;
 
    ostream & show(ostream & os) const;
 
    ~String();
};
 
ostream & operator << (ostream & os, const String & s)
{
    return s.show(os);
}
String.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "String.h"
#include <iostream>
#include <cstring>
 
using namespace std;
 
String::String()
{
    Str = 0;
    Length = 0;
}
 
String::String(const char* ptr)
    : Length(strlen(ptr)), Str(new char[Length + 1])
{
    strcpy(Str, ptr);
}
 
String::String(const String& t)
    : Length(strlen(t.Str)), Str(new char[Length + 1])
{
    strcpy(Str, t.Str);
}
String& String::operator = (String& t)
{
    swap(Length, t.Length);
    swap(Str, t.Str);
    return *this;
}
 
String& String::operator += (const String& t)
{
    int newLength = Length + t.Length;
    char *newStr = new char[newLength + 1];
    strcpy(newStr, Str);
    strcat(newStr, t.Str);
    delete[] Str;
    Str = newStr;
    Length = newLength;
    return *this;
}
 
bool String::operator == (const String& t) const
{
    return Length == t.Length && strcmp(Str, t.Str) == 0;
}
 
bool String::operator != (const String& t) const
{
    return !(operator == (t));
}
 
bool String::is_empty() const
{
    return Str == 0 || Str[0] == '\0';
}
 
const char* String::getStr() const
{
    return Str;
}
 
int String::getLength() const
{
    return Length;
}
 
ostream & String::show(ostream & os) const
{
    return os << "\"" << (Str ? Str : "") << "\"";
}
 
/*ostream & String::operator << (ostream & os, const String & s)
{
    return s.show(os);
}*/
 
String::~String()
{
    Length = 0;
    delete[] Str;
    Str = 0;
}

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "String.h"
#include <iostream>
#include <conio.h>
#include <cstring>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    String s("0 1 2 3 4 5 6 7 8 9 A B C D E F");
    String f("Qwertyy");
    cout << s << endl;
    cout << (s == f) << endl;
    s += f;
    cout << s << endl;
 
    _getch();
    return 0;
}
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.09.2018, 12:15
Ответы с готовыми решениями:

Ошибки компиляции при наследовании и выводе размера класса
Здравствуйте, представленный ниже код должен в результате своей работы выводит размер классов CDevice и CMonitor но при оторажение кода...

Не могу разобраться, почему при компиляции моя программа не работает? Варнингов 0 только вызывает исключение
Вообще нужно ввести в TextBox1 текст любого размера при нажатии на кнопку кодирования чтобы текст из TextBox1 конвертировался в символьный...

Не могу разобраться в ошибках компиляции
Всем привет, решил применить полученные за 3 дня изучения с++ знания. 3 ошибки, чувствую, что пока не хватает знаний, помогите плиз. ...

7
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,817
24.09.2018, 12:17
В тексте ошибки написано следующее:
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.
Это означает, что данные функции небезопасны и Microsoft советует использовать их аналоги, например, strcpy_s. Если Вы уверены, что функционал этих функций безопасен для Вас, можете добавить в начала файла, где они используются
C++
1
#define _CRT_SECURE_NO_WARNINGS
и эти ошибки исчезнут.
2
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
24.09.2018, 12:30  [ТС]
Теперь выдаётся ещё одна ошибка:
1>String.obj : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class String const &)" (??6@YAAAV?$basic_ostream@DU?$char_trait s@D@std@@@std@@AAV01@ABVString@@@Z) уже определен в Source.obj
1>c:\Visual C++\ЯМП №2\Debug\ЯМП №2.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
1
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,817
24.09.2018, 12:46
Оператор вывода нужно делать дружественным классу, для которого вы его делаете.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#pragma once
#include <iostream>
#include <cstring>
 
using namespace std;
 
class String
{
protected:
    char* Str;
    int Length;
public:
    String();
    String(const char* ptr);
    String(const String& t);
    String& operator = (String& t);
    String& operator += (const String& t);
    bool operator == (const String& t) const;
    bool operator != (const String& t) const;
    bool is_empty() const;
    const char* getStr() const;
    int getLength() const;
 
    ostream & show(ostream & os) const;
 
    ~String();
 
    friend ostream& operator<<(ostream& os, const String& s) {
 
        return s.show(os);
 
    }
 
};
1
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
24.09.2018, 13:00  [ТС]
Nishen, Спасибо, скомпилировалось! Можно Вас, пожалуйста, попросить попробовать запустить программу у себя?
Что-то мне нравится её работа...
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,817
24.09.2018, 13:08
Цитата Сообщение от eganator Посмотреть сообщение
запустить программу у себя
Нет. Запустите в онлайн компиляторах.
Цитата Сообщение от eganator Посмотреть сообщение
Что-то мне нравится её работа...
Так любуйтесь же ею.
0
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
24.09.2018, 13:20
Цитата Сообщение от Nishen Посмотреть сообщение
Оператор вывода нужно делать дружественным классу, для которого вы его делаете.
Не обязательно, иногда можно и глобальным сделать.
0
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
24.09.2018, 14:11  [ТС]
Nishen, Извините, описался. Имел ввиду не нравится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.09.2018, 14:11
Помогаю со студенческими работами здесь

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ bool game = true; // КЛАССЫ class Me; class mob { public: void showHpMp()

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...

Ошибки.Не как не могу разобраться
собственно вот ошибки (не могу скомпилировать) проект,первая при запуске. Вторая при компиляции проекта. Как исправить?

[Windows Phone] Ошибки Сокета, не могу разобраться
Пишу приложение для WP8.1 на основе демки по взаимодействию PC приложения и WP приложения. Суть следующая: в приложении для смартфона...

Не могу разобраться в логе ошибки
Стопорит проект в самом начале (setContentView(R.layout.activity_main);) Не могу понять что не так ....... public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru