Баба-Яга
8 / 5 / 3
Регистрация: 05.10.2021
Сообщений: 43
1

Ошибки в коде(классы)

06.11.2021, 01:44. Показов 842. Ответов 1
Метки с++ (Все метки)

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
#include "Person.h"
#include "Student.h"
#include "Prof.h"
using namespace std;
 
int main()
{
    Student s1("Ivanov", 1994, "ABC122");
    Student s2("Wetrov", 1993, "MRT121");
    Prof p1("Rogov", 1964, 323232);
    Prof p2("Smirnov", 1961, 219564);
    Person* ps[4]; // Массив указателей на базовый класс
    int average = 0, i;
    //Объединяем объекты разных типов в одном массиве
    ps[0]=&s1;
    ps[1]=&s2;
    ps[2]=&p1;
    ps[3]=&p2;
    //Вывод данных с помощью массива указателей
    for(i=0; i<4; i++) ps[i] > show(); //проявляется полиморфизм
    //Расчет среднего возраста
    for(i=0; i<4; i++)
    {
        average += 2012 (*(ps+i))>getYear();
    }
        average /= 4;
        cout << "Sredniy vozrast: " << average << endl;
    return 0;
}
Ошибки:
Кликните здесь для просмотра всего текста
Код
||=== Build: Debug in laba3 (compiler: GNU GCC Compiler) ===|
C:\Users\ivand\Desktop\laba3\main.cpp||In function 'int main()':|
C:\Users\ivand\Desktop\laba3\main.cpp|8|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|8|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|10|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|11|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|20|error: 'show' was not declared in this scope|
C:\Users\ivand\Desktop\laba3\main.cpp|20|note: suggested alternative: 'short'|
C:\Users\ivand\Desktop\laba3\main.cpp|24|error: expression cannot be used as a function|
C:\Users\ivand\Desktop\laba3\main.cpp|24|error: 'getYear' was not declared in this scope|
C:\Users\ivand\Desktop\laba3\main.cpp|24|note: suggested alternative: 'getchar'|
||=== Build failed: 3 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|


Добавлено через 9 минут
Весь проект:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef PERSON_H
#define PERSON_H
#include <iostream>
#include <string.h>
using namespace std;
 
class Person
{
    public:
    Person();
    int getYear();
    virtual void show();
    void setName(char*);
    void setYear(int);
 
    protected:
    char name[30];
    int year;
 
    private:
};
#endif // PERSON_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef STUDENT_H
#define STUDENT_H
#include "Person.h"
 
class Student : public Person
{
    public:
    Student(char*, int, char*);
    void setGroup(char*);
    void show();
 
    protected:
 
    private:
    char group[10];
};
 
#endif // STUDENT_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef PROF_H
#define PROF_H
#include "Person.h"
 
class Prof : public Person
{
    public:
    Prof(char*, int, int);
    void setTabNumber(int);
    void show();
 
    protected:
 
    private:
    int tabNumber;
};
 
#endif // PROF_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "..\include\Person.h"
using namespace std;
 
Person::Person():year(0){
    strcpy(name, "Noname");
}
 
int Person::getYear(){
    return year;
}
 
void Person::show(){
    cout << "Name: " << name << " Year: " << year << endl;
}
 
void Person::setName(char* n){
    strcpy(name, n);
}
 
void Person::setYear(int y){
    year = y;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "..\include\Prof.h"
 
Prof::Prof(char* n, int y, int t){
    strcpy(name, n);
    year=y;
    tabNumber=t;
}
 
void Prof::setTabNumber(int t){
    tabNumber = t;
}
 
void Prof::show(){
    cout << "Name: " << name << " Year: " << year << " TabNumber: "<< tabNumber;
    cout << endl;
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "..\include\Student.h"
 
Student::Student( char* n, int y,char* g){
    strcpy(name, n);
    strcpy(group, g);
    year =y;
}
 
void Student::setGroup(char* g){
    strcpy(group, g);
}
 
void Student::show(){
    cout << "Name: " << name << " Year: " << year << "Group: "<< group << endl;
}


Добавлено через 12 минут
Программа не моя(Из лабораторной) Сделал как там написано, но вылезли ошибки, от двух избавился.

Остались эти.

Код
||=== Build: Debug in laba3 (compiler: GNU GCC Compiler) ===|
C:\Users\ivand\Desktop\laba3\main.cpp||In function 'int main()':|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|10|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|10|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|11|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|12|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|21|warning: statement has no effect [-Wunused-value]|
C:\Users\ivand\Desktop\laba3\main.cpp|25|error: expression cannot be used as a function|
||=== Build failed: 1 error(s), 7 warning(s) (0 minute(s), 0 second(s)) ===|
Без понятия что это....
C++
1
average += 2012 (*(ps+i))>getchar();
Добавлено через 3 минуты
Правильно будет

C++
1
average += 2012-(*(ps+i))->getchar();
Программа запускается, но осталось это, можно жить?

Код
-------------- Build: Debug in laba3 (compiler: GNU GCC Compiler)---------------

g++.exe -Wall -fexceptions -g -Iinclude -c C:\Users\ivand\Desktop\laba3\main.cpp -o obj\Debug\main.o
g++.exe  -o bin\Debug\laba3.exe obj\Debug\main.o obj\Debug\src\Person.o obj\Debug\src\Prof.o obj\Debug\src\Student.o  -static-libstdc++ -static-libgcc -static  
C:\Users\ivand\Desktop\laba3\main.cpp: In function 'int main()':
C:\Users\ivand\Desktop\laba3\main.cpp:9:40: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     Student s1("Ivanov", 1994, "ABC122");
                                        ^
C:\Users\ivand\Desktop\laba3\main.cpp:9:40: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\ivand\Desktop\laba3\main.cpp:10:40: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     Student s2("Wetrov", 1993, "MRT121");
                                        ^
C:\Users\ivand\Desktop\laba3\main.cpp:10:40: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\ivand\Desktop\laba3\main.cpp:11:34: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     Prof p1("Rogov", 1964, 323232);
                                  ^
C:\Users\ivand\Desktop\laba3\main.cpp:12:36: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     Prof p2("Smirnov", 1961, 219564);
                                    ^
C:\Users\ivand\Desktop\laba3\main.cpp:21:30: warning: statement has no effect [-Wunused-value]
     for(i=0; i<4; i++) ps[i] > short(); //проявляется полиморфизм
                        ~~~~~~^~~~~~~~~
Output file is bin\Debug\laba3.exe with size 2,36 MB
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 7 warning(s) (0 minute(s), 2 second(s))
 

-------------- Run: Debug in laba3 (compiler: GNU GCC Compiler)---------------

Checking for existence: C:\Users\ivand\Desktop\laba3\bin\Debug\laba3.exe
Set variable: PATH=.;C:\Program Files\CodeBlocks\MinGW\bin;C:\Program Files\CodeBlocks\MinGW;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\dotnet;C:\MinGW\bin;C:\Users\ivand\AppData\Local\Microsoft\WindowsApps;\;C:\Users\ivand\.dotnet\tools;C:\Users\ivand\AppData\Local\Programs\Microsoft VS Code\bin
Executing: "C:\Program Files\CodeBlocks/cb_console_runner.exe" "C:\Users\ivand\Desktop\laba3\bin\Debug\laba3.exe"  (in C:\Users\ivand\Desktop\laba3\.)
Добавлено через 3 минуты
ещё одну решил

Надо:
C++
1
ps[i]->show();
Кликните здесь для просмотра всего текста
Код
-------------- Build: Debug in laba3 (compiler: GNU GCC Compiler)---------------

Target is up to date.
Nothing to be done (all items are up-to-date).


-------------- Run: Debug in laba3 (compiler: GNU GCC Compiler)---------------

Checking for existence: C:\Users\ivand\Desktop\laba3\bin\Debug\laba3.exe
Set variable: PATH=.;C:\Program Files\CodeBlocks\MinGW\bin;C:\Program Files\CodeBlocks\MinGW;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\dotnet;C:\MinGW\bin;C:\Users\ivand\AppData\Local\Microsoft\WindowsApps;\;C:\Users\ivand\.dotnet\tools;C:\Users\ivand\AppData\Local\Programs\Microsoft VS Code\bin
Executing: "C:\Program Files\CodeBlocks/cb_console_runner.exe" "C:\Users\ivand\Desktop\laba3\bin\Debug\laba3.exe"  (in C:\Users\ivand\Desktop\laba3\.)


Добавлено через 16 минут
И в итоге исправив все ошибки самостоятельно, программа заработала, вроде коректно, но остались предупреждения.

Можно ли от них избавиться ?

Код
||=== Build: Debug in laba3 (compiler: GNU GCC Compiler) ===|
C:\Users\ivand\Desktop\laba3\main.cpp||In function 'int main()':|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|9|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|10|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|10|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|11|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
C:\Users\ivand\Desktop\laba3\main.cpp|12|warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]|
||=== Build finished: 0 error(s), 6 warning(s) (0 minute(s), 2 second(s)) ===|
||=== Run: Debug in laba3 (compiler: GNU GCC Compiler) ===|
Программа с исправлениями:
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
#include "Person.h"
#include "Student.h"
#include "Prof.h"
 
using namespace std;
 
int main()
{
    Student s1("Ivanov", 1994, "ABC-122");
    Student s2("Wetrov", 1993, "MRT-121");
    Prof p1("Rogov", 1964, 323232);
    Prof p2("Smirnov", 1961, 219564);
    Person* ps[4]; // Массив указателей на базовый класс
    int average = 0, i;
    //Объединяем объекты разных типов в одном массиве
    ps[0]=&s1;
    ps[1]=&s2;
    ps[2]=&p1;
    ps[3]=&p2;
    //Вывод данных с помощью массива указателей
    for(i = 0; i < 4; i++)
        ps[i] -> show(); //проявляется полиморфизм
    //Расчет среднего возраста
    for(i=0; i<4; i++)
    {
        average += 2021 - (*(ps+i)) -> getYear();
    }
        average /= 4;
        cout << "Sredniy vozrast: " << average << endl;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2021, 01:44
Ответы с готовыми решениями:

Классы. Ошибки в коде
Пытаюсь учить классы, пока сложно, куча ошибок вылазит. Помогите, пожалуйста, как их убрать?...

Исправить ошибки в коде (классы)
есть написанный класс class student { protected: char registration_num; char name; char...

Найти и исправить ошибки в коде (классы)
Помогите разобраться где ошибка #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt;...

Шаблонные классы: найти и исправить ошибки в коде
Разбираюсь тут с шаблонами, вроде сделал все как в работающей программе, но не компилируется ...

1
438 / 281 / 183
Регистрация: 23.06.2018
Сообщений: 650
06.11.2021, 01:51 2
Лучший ответ Сообщение было отмечено hitmanEN как решение

Решение

Вы принимаете char*, а передаёте const char*.
В зависимости от того, сохраняете вы внутри указатель, или копируете его содержимое, нужно либо создавать динамические массивы и передавать их, либо добавить модификатор const аргументу конструктора соответственно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2021, 01:51
Помогаю со студенческими работами здесь

Найти причины возникновения ошибок в коде и исправить эти ошибки (классы, алгоритм сортировки)
Привет. Начинаю изучать работу классов и на примере алгоритмов сортировки использую классы....

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private:...

Ошибка в коде. Классы
Добрый день, подскажите, пожалуйста, как правильно объявить GetNumber_I, чтобы не было ошибки: ...

Классы. Исправить ошибки в коде
Помогите, пожалуйста, исправить ошибки в коде. Нужно сделать класс булева матрица(состоит из 0 и 1)...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru