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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
#1

Обьекты и классы - C++

22.03.2012, 19:33. Просмотров 809. Ответов 14
Метки нет (Все метки)

Здравствуйте!
Изучаю С++. Решил написать а-ля симулятор банкомата для закрепления материала, да вот чтот не срослось =(. Вот текст:
banking.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 _BANKING_H_
#define _BANKING_H_
 
class User
{
private:
    int ID;
    int PIN;
    double Money_add;
    double Money;
    void total ()
        { Money += Money_add; }
public:
    User();
    User(const int ind, const int code, double cash);
    ~User();
    void Add(double n);
    void Get(double n);
    void Halt (bool n = false);
    void Show();
};
#endif
banking.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <cstring>
 
using namespace std;
 
#include"Banking.h"
 
User::User()
{
    ID = 0;
    PIN = 0;
    Money_add = 0;
    Money = 0;
}
User::User(const int ind, const int code, double cash)
{
    ID = ind;
    PIN = code;
    if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Your statment set to 0;
        Money_add = 0;
    }
    else
        Money_add = cash;
    total();
}
 
User::Add(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
        if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Tranzaction aborted;
    }
    else
    {
        Money_add = n;
        total();
    }
}
 
User::Get(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
        if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Tranzaction aborted;
    }
    else
    {
        Money_add = -1*n;
        total();
    }
}
 
User::Halt(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
    {
        ID = 0;
        PIN = 0;
        Money_add = 0;
        Money = 0;
    }
}
User::Show()
{
    cout << "User ID#" << ID << ", you have" << Money << "$ on yours accaunt.\n"
Bank.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
#define COUNT 4
using namespace std;
 
#include "Banking.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    //cout.precision(2);
    //cout.setf(ios_base::fixed, ios_base::floatfield);
    //cout.setf(ios_base::showpoint);
 
    User Unit = {User(1001, 1234, 120.20)};
    Unit.Show();
 
    return 0;
}
Пишу в VS2010.
Вот лог ошибки:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>  1>------ Построение начато: проект: Bank, Конфигурация: Debug Win32 ------
1>Построение начато 22.03.2012 17:39:12.
1>InitializeBuildStatus:
1>  Обращение к "Debug\Bank.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Bank.cpp
1>e:\igor\c++\bank\bank\bank.cpp(16): error C2552: Unit: инициализация не агрегированных данных с помощью списка инициализации не допускается
1>          User: типы с закрытыми или защищенными данными-членами не являются агрегатными
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.45
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Я так понял что не выбрался нужный конструктор?
И почему пропустился #include <iostream>?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 19:33     Обьекты и классы
Посмотрите здесь:

Классы и обьекты - C++
Извините, вот возник вопрос с заданием. А именно, как передать конструктору Patient параметры(Фамилия, имя и тд), так чтобы они были в...

Классы и обьекты в С++ - C++
очень прошу помочь написать программу. т.к. в программировании я 0:( Написать программу, в которой создаются и разрушаются объекты,...

Классы и обьекты - C++
Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса. Выполнить исследование вызовов ...

Классы и обьекты - C++
Народ покажите плиз как это делается а то пока вьехать не могу((

Классы и обьекты в С++. Выполнить исследование вызовов конструкторов и деструкторов - C++
Написать программу, в которой создаются и разрушаются обьекты, определенного пользователем класса. Выполнить исследование вызовов...

Плохо ли делать зависящие друга от друга классы, в которых присутствуют указатели на обьекты других классов? - C++
Тру девелоперы,расскажите,почему говорят,что плохо делать зависящие друга классы,в которых присутствуют указатели на обьекты других классов?

Обьекты - C++
Помогите решить задачу Составить описание класса для представления комплексных чисел с возможностью задания вещественной и мнимой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 19:36     Обьекты и классы #2
Цитата Сообщение от Ukrajinec Посмотреть сообщение
C++
1
cerr << The value can't *be negative;
C++
1
cerr << "The value can\'t *be negative";
Добавлено через 37 секунд
Цитата Сообщение от Ukrajinec Посмотреть сообщение
И почему пропустился #include <iostream>?
Добавьте stdafx.h или отключите предкомпилированные заголовки.
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
22.03.2012, 19:37     Обьекты и классы #3
добавь

C++
1
#include "StdAfx.h"
Добавлено через 57 секунд
не успел!
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
22.03.2012, 19:42  [ТС]     Обьекты и классы #4
1) Уже исправил на can not (заметил только что)
2) ша попробую

Добавлено через 5 минут
Текущий текст я только что исправил наверху. Ошибка не исчезает((
iostream не пропускает теперь..
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.03.2012, 19:49     Обьекты и классы #5
Какие изменения произвели, и какие ошибки?
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
22.03.2012, 20:04  [ТС]     Обьекты и классы #6
Цитата Сообщение от go Посмотреть сообщение
Какие изменения произвели, и какие ошибки?
лог ошибки вверху, я успел изменить текст до того как "правка" стала невозможна). А насчет изменений то поменял местами #include "stdafx.h" и
#include <iostream> и теперь iostream не пропускается.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.03.2012, 20:11     Обьекты и классы #7
Ukrajinec, файл banking.cpp явно не закончен.
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
22.03.2012, 20:22  [ТС]     Обьекты и классы #8
Цитата Сообщение от go Посмотреть сообщение
файл banking.cpp явно не закончен
Тоесть? Какбы всё "закрыто"...
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.03.2012, 20:33     Обьекты и классы #9
Цитата Сообщение от Ukrajinec Посмотреть сообщение
Тоесть? Какбы всё "закрыто"...
Что значит как бы?
Метод show не описан до конца. Там как минимум отсутствует точка с запятой и закрывющая фигурная скобка.
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
22.03.2012, 22:15  [ТС]     Обьекты и классы #10
go, Извини, не полностью скопировал значит(( Вот весь текст + лог:

banking.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 _BANKING_H_
#define _BANKING_H_
 
class User
{
private:
    int ID;
    int PIN;
    double Money_add;
    double Money;
    void total ()
        { Money += Money_add; }
public:
    User();
    User(const int ind, const int code, double cash);
    ~User();
    void Add(double n);
    void Get(double n);
    void Halt (bool n = false);
    void Show();
};
#endif
banking.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <cstring>
 
using namespace std;
 
#include"Banking.h"
 
User::User()
{
    ID = 0;
    PIN = 0;
    Money_add = 0;
    Money = 0;
}
User::User(const int ind, const int code, double cash)
{
    ID = ind;
    PIN = code;
    if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Your statment set to 0;
        Money_add = 0;
    }
    else
        Money_add = cash;
    total();
}
 
User::Add(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
        if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Tranzaction aborted;
    }
    else
    {
        Money_add = n;
        total();
    }
}
 
User::Get(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
        if (cash < 0)
    {
        cerr << The value can not  be negative;
            <<Tranzaction aborted;
    }
    else
    {
        Money_add = -1*n;
        total();
    }
}
 
User::Halt(double n)
{
    if (ind != ID)
    {
        cerr <<Wrong ID.
            <<Tranzaction aborted;
    }
    else
    if (code != PIN)
    {
        cerr << Wrong PIN.\n;
        <<Tranzaction aborted;
    }
    else
    {
        ID = 0;
        PIN = 0;
        Money_add = 0;
        Money = 0;
    }
}
User::Show()
{
    cout << "User ID#" << ID << ", you have" << Money << "$ on yours accaunt.\n";
}
Bank.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
#define COUNT 4
using namespace std;
 
#include "Banking.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    //cout.precision(2);
    //cout.setf(ios_base::fixed, ios_base::floatfield);
    //cout.setf(ios_base::showpoint);
 
    User Unit = {User(1001, 1234, 120.20)};
    Unit.Show();
 
    return 0;
}
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1>------ Построение начато: проект: Bank, Конфигурация: Debug Win32 ------
1>Построение начато 22.03.2012 20:15:12.
1>InitializeBuildStatus:
1>  Обращение к "Debug\Bank.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Bank.cpp
1>e:\igor\c++\bank\bank\bank.cpp(16): error C2552: Unit: инициализация не агрегированных данных с помощью списка инициализации не допускается
1>          User: типы с закрытыми или защищенными данными-членами не являются агрегатными
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.33
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
22.03.2012, 22:20     Обьекты и классы #11
Ukrajinec, в banking.cpp 21-ая строка и тому подобное. Сами исправите...
http://liveworkspace.org/code/fa2891...5f93d8c7ed9484 вот для удобства скопировал очень грубо (пока без студии разберитесь)
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.03.2012, 22:28     Обьекты и классы #12
Ukrajinec, в banking.cpp функции написаны без возвращаемых типов. И в функции Add ерунда, а именно: ind и ему подобные существуют только в конструкторе. Дальше не смотрел.
Avazart
7099 / 5276 / 267
Регистрация: 10.12.2010
Сообщений: 23,262
Записей в блоге: 17
22.03.2012, 23:26     Обьекты и классы #13
C++
1
2
3
4
5
6
7
8
9
10
User::Add(double n)  // Может void User::Add(double n)
{
        if (ind != ID)     //   У тебя не объявлено не где переменной  ind 
        {
                cerr <<Wrong ID.        // Где кавычки ? может 
                        <<Tranzaction aborted; // cerr <<"Wrong  ID"<<endl<<"Tranzaction aborted";  
        }
        else
   // ....
        }
Дальше по коду та же ерунда
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
23.03.2012, 22:50  [ТС]     Обьекты и классы #14
go,
Avazart,
soon,
Спасибо ребята за помощь. Все работает. Просто ужас какой я невнимательный((.
Отдельное БОЛЬШОЕ спасибо go, за ссилку на компилятор, не знаю как бы я разобрался без него..))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 20:56     Обьекты и классы
Еще ссылки по теме:

Классов и обьекты - C++
Учу с++ по учебнику. Набрал такую вот программу, и сразу выскочила масса ошибок. Некоторые из них были очевидны и я их исправил, но пара...

Обьекты класса - C++
Возник такой вопрос. Есть класс Авто, в котором конструктор считает количество введеных машин. Проблемма в создание нужного количества...

Добавить в список указатели на обьекты произвольных типов - C++
Доброго времени суток, плиз помогите кто чем может ,имеется класс class TGarbageCollector { public: template...

Помогите понять и исправить ошибку (статические обьекты) - C++
Недавно начал разбираться в новой теме и тут же с примером ошибка... (компилятор выдает 2 ошибки смысл которых мне относительно ясен но...

Потокобезопасно ли одновременно добавлять в конец list обьекты и удалять из середины? - C++
Добрый день. Потокобезопасно ли одновременно добавлять в конец list обьекты и удалять из середины? Есть два потока. Один парсит лист и...


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

Или воспользуйтесь поиском по форуму:
Ukrajinec
1 / 1 / 0
Регистрация: 06.04.2009
Сообщений: 164
25.03.2012, 20:56  [ТС]     Обьекты и классы #15
Вот только что добрался до интернета. Значит так, программа, в комниляторе что мне дан был по ссылке, работает нормально, а в VS2010 выскакивают 2 ошибки.
Текст и лог:
banking.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
#ifndef _BANKING_H_
#define _BANKING_H_
 
class User
{
private:
        int ID;
        int PIN;
        double Money_add;
        double Money;
        void total ()
                { Money += Money_add; }
public:
        User();
        User(const int ind, const int code, double cash);
        ~User() { }
        void Add(int ind, int code, double cash);
        void Get(int ind, int code, double cash);
        void Halt (int ind, int code);
        void Show();
};
 
#endif
banking.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
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
#include"Banking.h"
 
User::User()
{
        ID = 0;
        PIN = 0;
        Money_add = 0;
        Money = 0;
}
User::User(const int ind, const int code, double cash)
#include <iostream>
#include <cstring>
 
using namespace std;
 
 
User::User()
{
        ID = 0;
        PIN = 0;
        Money_add = 0;
        Money = 0;
}
User::User(const int ind, const int code, double cash)
{
        ID = ind;
        PIN = code;
        if (cash < 0)
        {
                cout << "The value can not  be negative.\n Your statment set to 0";
                Money_add = 0;
        }
        else
                Money_add = cash;
        total();
}
 
void User::Add(int ind, int code, double cash)
{
        if (ind != ID)
        {
                cout <<"Wrong ID.\n Tranzaction aborted";
        }
        else
        if (code != PIN)
        {
                 cout <<"Wrong PIN.\n Tranzaction aborted";
        }
        else
                if (cash < 0)
        {
                cout << "The value can not  be negative.\n Tranzaction aborted";
        }
        else
        {
                Money_add = cash;
                total();
        }
}
 
void User::Get(int ind, int code, double cash)
{
        if (ind != ID)
        {
                cout <<"Wrong ID.\n Tranzaction aborted";
        }
        else
        if (code != PIN)
        {
                
        }
        else
                if (cash < 0)
        {
                cout << "The value can not  be negative.\n Tranzaction aborted";
        }
        else
        {
                Money_add = -1*cash;
                total();
        }
}
 
void User::Halt(int ind, int code)
{
        if (ind != ID)
        {
              cout <<"Wrong ID.\n Tranzaction aborted";
        }
        else
        if (code != PIN)
        {
                cout <<"Wrong PIN.\n Tranzaction aborted";
        }
        else
        {
                ID = 0;
                PIN = 0;
                Money_add = 0;
                Money = 0;
        }
}
void User::Show()
{
        cout << "User ID#" << ID << ", you have" << Money << "$ on yours accaunt.\n";
}
Bank.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Bank.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "Banking.h"
#define COUNT 4
using namespace std;
 
 
 
int main()
{
        //cout.precision(2);
        //cout.setf(ios_base::fixed, ios_base::floatfield);
        //cout.setf(ios_base::showpoint);
 
        User Unit = User(1001, 1234, 120.20);
        Unit.Show();
 
        return 0;
}
Лог
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1>------ Построение начато: проект: Bank, Конфигурация: Debug Win32 ------
1>Построение начато 25.03.2012 19:46:08.
1>InitializeBuildStatus:
1>  Обращение к "Debug\Bank.unsuccessfulbuild".
1>ClCompile:
1>  Для всех выходных данных обновления не требуется.
1>  Для всех выходных данных обновления не требуется.
1>ManifestResourceCompile:
1>  Для всех выходных данных обновления не требуется.
1>Bank.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall User::Show(void)" (?Show@User@@QAEXXZ) в функции _main
1>Bank.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall User::User(int,int,double)" (??0User@@QAE@HHN@Z) в функции _main
1>E:\Igor\C++\Bank\Debug\Bank.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
Погуглив немного в описании причин ошибки LNK2019 есть такой текст:
Зависимость построения определена только как зависимость проекта в решении. В более ранних версиях Visual Studio вполне хватало этого уровня зависимостей. Однако начиная с Visual Studio 2010, для Visual Studio требуются ссылки между проектами. Если проект не содержит ссылку между проектами, может возникать ошибка компоновщика.
Ссилка на страницу: http://msdn.microsoft.com/ru-ru/library/799kze2z.aspx
Что это означает? Может в этом проблема?
Yandex
Объявления
25.03.2012, 20:56     Обьекты и классы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru