Форум программистов, компьютерный форум CyberForum.ru

Разбор кода простой программы новичка - C++

Восстановить пароль Регистрация
 
Shok_One
 Аватар для Shok_One
2 / 2 / 0
Регистрация: 24.04.2012
Сообщений: 59
03.07.2012, 00:35     Разбор кода простой программы новичка #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
30
31
32
33
34
35
36
37
38
39
#include <iostream.h>
 
class Rabota
{
public:
    int starye();
    int rabotka();
private:
    int cash = 50000;
    int people = 3;
    int budzhet;
    int x;
    int y;
}
 
Rabota::starye()
{
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
    budzhet = cash * people;
    return 0;
}
 
Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n" << x  << " i ih zarplaty: \n" << y << endl;
    cin >> x;
    cin >> y;
    cout << "I budzet novyh sotrudnikov: \n";
    return x * y;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    return 0;
}
а вот ошибки компилятора:
(9) : error C2258: illegal pure syntax, must be '= 0'
(9) : error C2252: 'cash' : pure specifier can only be specified for functions
(10) : error C2258: illegal pure syntax, must be '= 0'
(10) : error C2252: 'people' : pure specifier can only be specified for functions
(17) : error C2556: 'class Rabota __thiscall Rabota::starye(void)' : overloaded function differs only by return type from 'int __thiscall Rabota::starye(void)'
(6) : see declaration of 'starye'
(17) : error C2371: 'starye' : redefinition; different basic types
(6) : see declaration of 'starye'
(18) : error C2065: 'people' : undeclared identifier
(18) : error C2065: 'cash' : undeclared identifier
(37) : error C2264: 'starye' : error in function definition or declaration; function not called
Error executing cl.exe.

first.exe - 9 error(s), 0 warning(s)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 00:35     Разбор кода простой программы новичка
Посмотрите здесь:

Разбор кода программы C++
Доскональный разбор кода C++ C++
Разбор кода C++
C++ Разбор кода
C++ Комментарии и разбор кода
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 00:44     Разбор кода простой программы новичка #2
Цитата Сообщение от Shok_One Посмотреть сообщение
int cash = 50000;
* * int people = 3;
надо инициализировать в конструкторе
ах да,конструктора-то нет,а объект вы создаёте

Цитата Сообщение от Shok_One Посмотреть сообщение
Rabota::starye()
{
* * cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
* * budzhet = cash * people;
* * return 0;
}
можно вообще не возвращать 0,ведь он не используется дальше
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
03.07.2012, 00:58     Разбор кода простой программы новичка #3
Забыли точку с запятой после скобки объявления класса. И еще кое что.
Цитата Сообщение от Shok_One Посмотреть сообщение
private:
int cash = 50000;
int people = 3;
Shok_One, инициализация в классе (в объявлении, то есть в теле) допускается только для статических полей. Это поля общие для всех экземпляров и недоступные для функций членов класса. Но Вы же обращаетесь к ним из функций членов, то есть уберите инициализацию:
C++
1
2
3
private:
    int cash;// = 50000;
    int people;// = 3;
Для того что бы получить экземпляр с заданными значениями этих полей в открытой части объявите конструктора:
C++
1
2
3
4
5
public:
    int starye();
    int rabotka();
Rabota ();
Rabota (int a,int b);
а вне тела объявления напишите:
C++
1
2
Rabota::Rabota (){cash = 50000; people = 3;}
Rabota::Rabota (int a,int b){cash = a; people = b;}
попробуйте скомпилировать.
А вообще стоит Вам почитать.
Shok_One
 Аватар для Shok_One
2 / 2 / 0
Регистрация: 24.04.2012
Сообщений: 59
03.07.2012, 00:59  [ТС]     Разбор кода простой программы новичка #4
поправьте код пожалуйста, я конструктор инициализировал и теперь ошибок стало в два раза больше.

Добавлено через 10 секунд
о спасибо)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2012, 01:02     Разбор кода простой программы новичка #5
Насчёт инициализации при объявлении класса уже написали. Инициализация предполагает выделение памяти под переменную. При объявлении класса память не выделяется, это только шаблон для компилятора, который используется при создании объектов класса. Память выделяется под объект класса при его создании, поэтому инициализация элементов класса происходит в конструкторе класса. Конструктор у вас не определён, поэтому будет использоваться конструктор по умолчанию. Ошибки: 1) После объявления класса ставится ; . 2) Методы starye() и rabotka() оъявлены как возвращающие значение, а в реализации этих методов это отсутствует. Надо так: int Rabota::starye() {...} , int Rabota::rabotka() {...} .
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 01:05     Разбор кода простой программы новичка #6
Цитата Сообщение от IGPIGP Посмотреть сообщение
инициализация в классе (в объявлении, то есть в теле) допускается только для статических полей
нет,статические элементы инициализируются вне тела класса
zvoronz
 Аватар для zvoronz
270 / 237 / 21
Регистрация: 29.05.2012
Сообщений: 889
03.07.2012, 01:06     Разбор кода простой программы новичка #7
Теперь компилится как и просил.

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
#include <iostream>
 
using namespace std;
 
class Rabota
{
public:
    int starye();
    int rabotka();
    Rabota()
    {
        cash = 50000;
        people = 3;
    }
private:
    int cash;
    int people;
    int budzhet;
    int x;
    int y;
};
 
int Rabota::starye()
{
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" << cash << " a budzhet obshy: \n" << budzhet << endl;
    budzhet = cash * people;
    return 0;
}
 
int Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n" << x  << " i ih zarplaty: \n" << y << endl;
    cin >> x;
    cin >> y;
    cout << "I budzet novyh sotrudnikov: \n";
    return x * y;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2012, 01:24     Разбор кода простой программы новичка #8
А вот так, будет и работать:
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>
using namespace std;
 
class Rabota
{
public:
    void starye();
    void rabotka();
    Rabota ();
    Rabota (int a,int b);
private:
    int cash;
    int people;
    int budzhet;
    int x;
    int y;
};
 
Rabota::Rabota (){cash = 50000; people = 3; budzhet = cash * people;}
 
Rabota::Rabota (int a,int b){cash = a; people = b;}
 
void Rabota::starye()
{   
    cout << "Sotrudnikov v kompanii: \n" << people << " i ih zarplata: \n" 
    << cash << ", a budzhet obshy: \n" << budzhet << endl;
}
 
void Rabota::rabotka()
{
    cout << "Vvedite colichestvo novyh: \n";  
    cin >> x;
    cin.clear();
    while (cin.get() != '\n');
    cout << "ih zarplata: \n";
    cin >> y;
    cin.clear();
    while (cin.get() != '\n');
    cout << "Budzet novyh sotrudnikov budet: \n";
    cout << x * y << endl;
}
 
int main()
{
    Rabota Kompania;
    Kompania.rabotka();
    cout << "No v kompanii est i starye sotrudniki \n";
    Kompania.starye();
    
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 01:31     Разбор кода простой программы новичка
Еще ссылки по теме:

C++ Разбор кода
C++ Разбор кода программы
Разбор кода C++

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
03.07.2012, 01:31     Разбор кода простой программы новичка #9
Цитата Сообщение от alexey31415 Посмотреть сообщение
статические элементы инициализируются вне тела класса
Да, имел ввиду статические константы, а написал кривовато.
Yandex
Объявления
03.07.2012, 01:31     Разбор кода простой программы новичка
Ответ Создать тему
Опции темы

Текущее время: 10:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru