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

Ошибка компиляции,

25.06.2019, 01:43. Показов 1476. Ответов 3

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста найти ошибку. Программа не собирается, но ошибок не выдает...
Созданы два класса, первый класс описывает объект, состоящий из наименования производителя и названия детали. Второй класс состоит из динамического массива объектов первого класса.
Было необходимо создать объект состоящий из 5 объектов product. Ввести в каждый объект данные по наименованию находящиеся в переменной char и распечатать полученный результат. Но, к сожалению программа не собирается, не могу найти ошибки... IDE не выдает подсказки


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
#ifndef GROUP_H
#define GROUP_H
#include <iostream>
#include <string>
#include <cstring>
#include "person.h"
 
class Group{
private:
    int razmer;
    product* a;
public:
   Group();// конструктор по умолчанию
   Group(int f);
   ~Group();// деструктор
   void Print() const;
   int Size();// возвращает размер массива
 
 
void Putproduct(int i, product &x);
 
const product & Getproduct(int i) const;
};
 
#endif /* GROUP_H */
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef laboratory // директива для защиты от многократного включения
#define laboratory
#include <iostream>
#include <string>
#include <cstring>
class product // имя класса
{
private: // закрытая часть класса, можно использовать без private (по умолчанию)
std::string manufacture;
char* name; 
char* shifr;
int number;
 
public: //открытая часть класса
product();
product(const std::string & man, const char* na ="Noname", const char* sh="0000", int num=0);
~product();
void print() const;
void input();
};
 
#endif
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
#include <iostream>
#include <cstring>
#include "group.h"
 
Group::Group(){
    razmer=1;
    product*a= new product[0];
}
 
Group::Group(int f){
    razmer=f;
    product*a= new product[razmer];
            
}
 
Group::~Group(){
    delete[] a;
}
 
 void Group::Print()const{
     for (int i=0; i<razmer; ++i)
         (a+i)->print();
 }
 
int Group:: Size(){
    return razmer;
    }
 
void Group::Putproduct(int i, product & x){
    a[i]=x;
    
}
 
const product & Group::Getproduct(int i) const{
    return a[i];
}
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
#include <iostream>
#include <cstring>
#include "person.h"
product::product()//конструктор по умолчанию
{
manufacture="Noname";
name="Noname";
shifr="0000";
number=0;
}
 
product::~product(){} //деструктор, необходим для удаления "мусора"
product::product(const std::string & man, const char* na, const char* sh, int num){
manufacture=man;
name=new char[strlen(na)+1];//создание массива нужной длины
strcpy(name,na);
shifr=new char[strlen(sh)+1];//создание массива нужной длины
strcpy(shifr,sh);
number=num;
}
 
void product::print() const{
    using std::cout;
    using std::endl;
    
    cout<<"Product information:"<<endl;
    cout<< "Manufacture: "<<manufacture<<endl;
    cout<<"Product name: "<<name<<endl;
    cout<<"Item code: "<<shifr<<endl;
    cout<<"Number of goods: "<<number<<endl;
}
void product::input(){
    using std::cout;
    using std::endl;
    using std::cin;
    char*na;
    char*sh;
    cout<<"Введите название компании: ";
    getline(cin,manufacture);
    cout<<"Введите название товара: ";
    cin.getline(na, 100);
    name=new char[strlen(na)+1];
    strcpy(name,na);
    cout<<"Введите код товара: ";
    cin.getline(sh, 100);
    shifr=new char[strlen(sh)+1];
    strcpy(shifr,sh);
    cout<<"Введите количество товара на складе: ";
    cin>>number;
    cout<<endl;
     
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <string>
#include <iostream>
#include "person.h"
#include "group.h"
int main()
{
    Group group(5);
    char nazvanie[][15]{"Nist","Artemida","Texx","InVoice","Xtipe"};
    for(int i=0;i<group.Size();++i){
        product Person=product(nazvanie[i]);
        group.Putproduct(i,Person);
    };
    group.Print();
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2019, 01:43
Ответы с готовыми решениями:

Ошибка при компиляции. Где ошибка? (Работа с классом)
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined reference to `MeterNZiF::MeterNZiF()' &quot; на 7 строку...

При компиляции ошибка. Ошибка c++ C2678
Ошибка c++ C2678 #include &lt;windows.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include...

ошибка компиляции
1&gt;C:\PROGRAM FILES (X86)\MICROSOFT VISUAL...

3
 Аватар для 7533620
163 / 70 / 39
Регистрация: 28.05.2019
Сообщений: 242
25.06.2019, 07:59
Цитата Сообщение от Mislap Посмотреть сообщение
Программа не собирается, но ошибок не выдает
Такого не бывает
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
25.06.2019, 08:23
Лучший ответ Сообщение было отмечено Mislap как решение

Решение

Не могло это компилироваться.
Вот исправленный код
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <string>
 
class product // имя класса
{
private: // закрытая часть класса, можно использовать без private (по умолчанию)
    std::string manufacture;
    std::string  name;
    std::string  shifr;
    int number;
 
public: //открытая часть класса
    product();
    product(const std::string & man, const char* na = "Noname", const char* sh = "0000", int num = 0);
    ~product();
    void print() const;
    void input();
};
 
class Group {
private:
    int razmer;
    product* a;
public:
    Group();// конструктор по умолчанию
    Group(int f);
    ~Group();// деструктор
    void Print() const;
    int Size();// возвращает размер массива
 
 
    void Putproduct(int i, product &x);
 
    const product & Getproduct(int i) const;
};
 
Group::Group() {
    razmer = 1;
    a = new product[1];
}
 
Group::Group(int f) {
    razmer = f;
    a = new product[razmer];
 
}
 
Group::~Group() {
    delete[] a;
}
 
void Group::Print()const {
    for (int i = 0; i<razmer; ++i)
        (a + i)->print();
}
 
int Group::Size() {
    return razmer;
}
 
void Group::Putproduct(int i, product & x) {
    a[i] = x;
 
}
 
const product & Group::Getproduct(int i) const {
    return a[i];
}
product::product()//конструктор по умолчанию
{
    manufacture = "Noname";
    name = "Noname";
    shifr = "0000";
    number = 0;
}
 
product::~product() {} //деструктор, необходим для удаления "мусора"
product::product(const std::string & man, const char* na, const char* sh, int num) {
    manufacture = man;
    //name = new char[strlen(na) + 1];//создание массива нужной длины
    name = na;
    //shifr = new char[strlen(sh) + 1];//создание массива нужной длины
    shifr = sh;
    number = num;
}
 
void product::print() const {
    using std::cout;
    using std::endl;
 
    cout << "Product information:" << endl;
    cout << "Manufacture: " << manufacture << endl;
    cout << "Product name: " << name << endl;
    cout << "Item code: " << shifr << endl;
    cout << "Number of goods: " << number << endl;
}
void product::input() {
    using std::cout;
    using std::endl;
    using std::cin;
    cout << "Введите название компании: ";
    getline(cin, manufacture);
    cout << "Введите название товара: ";
    getline(cin, name);
    cout << "Введите код товара: ";
    getline(cin, shifr);
    cout << "Введите количество товара на складе: ";
    cin >> number;
    cout << endl;
 
};
int main()
{
    Group group(5);
    char nazvanie[][15]{ "Nist","Artemida","Texx","InVoice","Xtipe" };
    for (int i = 0; i<group.Size(); ++i) {
        product Person = product(nazvanie[i]);
        group.Putproduct(i, Person);
    };
    group.Print();
    return 0;
}
Но, если будете доделывать класс Group не пренебрегайте ПРАВИЛОМ ТРЕХ: добавьте копиконструктор и operator=
А еще лучше - замените этот класс на vector<product>:
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
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <string>
#include <vector>
 
class product // имя класса
{
private: // закрытая часть класса, можно использовать без private (по умолчанию)
    std::string manufacture;
    std::string  name;
    std::string  shifr;
    int number;
 
public: //открытая часть класса
    product();
    product(const std::string & man, const char* na = "Noname", const char* sh = "0000", int num = 0);
    void print() const;
    void input();
};
 
 
product::product()//конструктор по умолчанию
{
    manufacture = "Noname";
    name = "Noname";
    shifr = "0000";
    number = 0;
}
 
product::product(const std::string & man, const char* na, const char* sh, int num) {
    manufacture = man;
    name = na;
    shifr = sh;
    number = num;
}
 
void product::print() const {
    using std::cout;
    using std::endl;
 
    cout << "Product information:" << endl;
    cout << "Manufacture: " << manufacture << endl;
    cout << "Product name: " << name << endl;
    cout << "Item code: " << shifr << endl;
    cout << "Number of goods: " << number << endl;
}
void product::input() {
    using std::cout;
    using std::endl;
    using std::cin;
    cout << "Введите название компании: ";
    getline(cin, manufacture);
    cout << "Введите название товара: ";
    getline(cin, name);
    cout << "Введите код товара: ";
    getline(cin, shifr);
    cout << "Введите количество товара на складе: ";
    cin >> number;
    cout << endl;
 
};
int main()
{
    std::vector<product> group;
    char nazvanie[5][15]{ "Nist","Artemida","Texx","InVoice","Xtipe" };
    for (int i = 0; i<5; ++i) {
        product Person = product(nazvanie[i]);
        group.push_back(Person);
    };
    for (auto p : group)
    {
        p.print();
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 10
26.06.2019, 21:49  [ТС]
zss, большое спасибо за помощь!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2019, 21:49
Помогаю со студенческими работами здесь

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

Ошибка компиляции
#include &lt;iostream&gt; using namespace std; int main() { cout&lt;&lt; &quot;Hello world!&quot;; return 0; }

Ошибка компиляции
У друга проект не запускается (он работает на 10 студии), у меня в 12 такой же набор привел к успеху. Ошибки не пойму. Вот код(извиняюсь...

Ошибка компиляции
Здравствуйте учу С++ по книге Дейтела, вот возникла ошибка компиляции программы: #include &quot;stdafx.h&quot; #include...

Ошибка компиляции
При компиляции следующего кода возникает ошибка: #include &lt;iostream&gt; using namespace std; int main() { int m; int...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru