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

Не получается разобраться с абстрактными классами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отловить ошибки в программе моделирования экологической системы леса http://www.cyberforum.ru/cpp/thread1470179.html
Задача: Составить программу моделирования экологической системы леса, включающую в себя конечное число объектов. Описание программы: Процесс моделирования происходит за конечное число итераций. На каждой итерации система "Лес" изображается в текстовом режиме в виде таблицы ячеек, каждая из которых может быть либо пустой, либо содержать объект одного из типов: "Растение", "Травоядное животное"...
C++ Нужна литература по созданию красивого интерфейса для приложений 1.Посоветуйте какие-то книги по визуализации в С++, я начинающий программист, хочу научиться делать классное оформление программ) типа там кнопочки поля разные) 2.Опишите свой идеальный путь по изучению С++, что зач ем учить, мож список книг по очереди)) заранее СПаСИбо:) http://www.cyberforum.ru/cpp/thread1467781.html
Выбор технологии для написания приложений под Windows C++
Добрый вечер. Столкнулся с вопросом, который не дает жить вот уже пару дней, а именно: под винду на плюсах можно писать оконные приложения благодаря winapi, mfc, c++/cli. О каждом я прочитал что-то на msdn, что-то тут, что-то на википедии. Сам же знаю не совсем хорошо winapi, зачастую туплю на нем, да и кода получается очень много + я читал, что можно использовать классы, но вот как - гугл не...
Написать графический редактор электрических принципиальных схем с цифровыми элементами C++
Вот задали написать программу, а как делать вообще никаких примеров нет... Разработать программу-графический редактор специализирован на построении схем электрических принципиальных, которые включают в себя цифровые элементы. Подскажите пожалуйста.
C++ Где в интернете можно найти работу новичку без опыта http://www.cyberforum.ru/cpp/thread1466719.html
Добрый день! Я хотел бы задать вопрос, где в интернете можно найти работу новичку без опыта, необязательно оплачиваемую, просто хочу попрактиковаться, попробывать использывать свои знания. Я пробывал на www.freelancer.com , но у меня ничего не получалось, от части из-за того что на одно задание человек 20.
C++ Fread(), fseek(), fwrite() - Переписка байтов Всем привет. Такой вопрос. Есть задача пройтись по бинарному файлу с вещественными числами и как-то изменить его элементы, пусть будет, умножить на 3. Почему вот такой вариант (более логичный, как мне кажется) не работает, сбивается после 2-ого числа: double buf; fseek(fdata, 0L, SEEK_SET); while (!feof(fdata)){ fread(&buf, sizeof(double), 1, fdata); // можно для пущей... подробнее

Показать сообщение отдельно
Alexander273
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 13

Не получается разобраться с абстрактными классами - C++

08.06.2015, 14:57. Просмотров 403. Ответов 2
Метки (Все метки)

Всем привет, у меня пара вопросов, не получается почему скомпилить файл. Ругается, видимо что то не понимаю до конца с абстрактными классами. Подскажите пожалуйста как реализовать, и почему он может ругаться? а то выдает что undefined reference to Numbers::Numbers().
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <ctime>
 
using namespace std;
 
class Numbers
{
public:
    Numbers();
    ~Numbers();
    virtual void ShowNumbers()=0;
};
 
 
class Pairs : public Numbers
{
friend istream& operator>> (istream&in, Pairs &P);
friend ostream& operator<< (ostream&out, Pairs &P);
friend void operator==(Pairs &P1, Pairs &P2);
public:
void ShowNumbers()
{
    cout << "Пара:\n"
         << FirstNum << "\t" << SecondNum;
}
protected:
    int FirstNum;
    int SecondNum;
};
 
void operator== (Pairs &P1, Pairs &P2)
{
if ((P1.FirstNum>P2.FirstNum) || ((P1.FirstNum==P2.FirstNum)&&(P1.SecondNum>P2.SecondNum)))
    cout << "Первая пара больше.\n";
if ((P1.FirstNum==P2.FirstNum)&&(P1.SecondNum==P2.SecondNum))
    cout << "Пары равны.\n";
if ((P1.FirstNum<P2.FirstNum) || ((P1.FirstNum==P2.FirstNum)&&(P1.SecondNum<P2.SecondNum)))
    cout << "Вторая пара больше.\n";
}
istream& operator>> (istream&in, Pairs &P)
{
    cout << "Введите первое число: "; in>>P.FirstNum;
    cout << "Введите введите втрое число: "; in>>P.SecondNum;
 
    return in;
}
 
ostream& operator<< (ostream&out, Pairs &P)
{
    return (out<<"\Первое число\t|\tВторое число\n"<<P.FirstNum << "\t|\t" << P.SecondNum);
}
 
 
class FractionPairs : public Pairs
{
friend istream& operator>> (istream&in, FractionPairs &FP);
friend void operator== (FractionPairs &FP1, FractionPairs &FP2);
public:
void ShowNumbers()
{
    cout << "Пара:\n"
         << FirstNum << " " << FirstChisl <<"/"<< FirstZnam << "\t" << SecondNum << " " << SecondChisl <<"/"<< SecondZnam;
}
protected:
    int FirstChisl;
    int FirstZnam;
    int SecondChisl;
    int SecondZnam;
};
 
void operator== (FractionPairs &FP1, FractionPairs &FP2)
{
double dFirstPairWhole1, dFirstPairWhole2;
double dSecondPairWhole1, dSecondPairWhole2;
dFirstPairWhole1=double(FP1.FirstNum)+(double(FP1.FirstChisl)/double(FP1.FirstZnam));
dFirstPairWhole2=double(FP1.SecondNum)+(double(FP1.SecondChisl)/double(FP1.SecondZnam));
dSecondPairWhole1=double(FP2.FirstNum)+(double(FP2.FirstChisl)/double(FP2.FirstZnam));
dSecondPairWhole2=double(FP2.SecondNum)+(double(FP2.SecondChisl)/double(FP2.SecondZnam));
if ((dFirstPairWhole1>dSecondPairWhole1) || ((dFirstPairWhole1==dSecondPairWhole1)&&(dFirstPairWhole2>dSecondPairWhole2)))
    cout << "Первая пара больше.\n";
if ((dFirstPairWhole1==dSecondPairWhole1)&&(dFirstPairWhole2==dSecondPairWhole2))
    cout << "Пары равны.\n";
if ((dFirstPairWhole1<dSecondPairWhole1) || ((dFirstPairWhole1==dSecondPairWhole1)&&(dFirstPairWhole2<dSecondPairWhole2)))
    cout << "Вторая пара больше.\n";
}
 
 
istream& operator>> (istream&in, FractionPairs &FP)
{
    cout << "Первое число:\n";
    cout << "Введите целую часть числа: "; cin >> FP.FirstNum;
    cout << "Введите дробную часть числа:\nЧислитель: "; cin >> FP.FirstChisl;
    cout << "Знаменатель: "; cin >> FP.FirstZnam;
    if (FP.FirstZnam==0)
    {
        cout << "Знаменатель не может быть равен 0.\n";
        cout << "Знаменатель: "; cin >> FP.FirstZnam;
    }
    cout << "Второе число:\n";
    cout << "Введите целую часть числа: "; cin >> FP.SecondNum;
    cout << "Введите дробную часть числа:\nЧислитель: "; cin >> FP.SecondChisl;
    cout << "Знаменатель: "; cin >> FP.SecondZnam;
    if (FP.SecondZnam==0)
    {
        cout << "Знаменатель не может быть равен 0.\n";
        cout << "Знаменатель: "; cin >> FP.SecondZnam;
    }
    return in;
}
 
 
int main()
{
            SetConsoleCP(1251);
            SetConsoleOutputCP(1251);
            Pairs Pair1;
            Pairs Pair2;
            int nInsertPairs, nInsertPairs2;
            cout << "Данная программа сравнивает пары чисел.\n";
            cout << "Введите пары целых чисел:\n";
            for (;;)
            {
            cout << "Ввести пары чисел? 1-да 0-нет. "; cin >> nInsertPairs;
            if (nInsertPairs==0)
            {
                //cout << "\nВсего доброго.\n";
                break;
            }
            cout << "Введите первую пару:\n";
            cin >> Pair1;
            cout << "Введите вторую пару:\n";
            cin >> Pair2;
            cout << "---------------------------------------\n";
            Pair1==Pair2;
            cout << "---------------------------------------\n";
            }
            cout << "Дробные числа:\n";
            for (;;)
            {
            cout << "Ввести пары чисел? 1-да 0-нет. "; cin >> nInsertPairs2;
            if (nInsertPairs2==0)
            {
                cout << "\nВсего доброго.\n";
                break;
            }
            cout << "Введите пары дробных чисел\nВведите первую пару:\n";
            cout << "---------------------------------------\n";
            FractionPairs FPair1;
            FractionPairs FPair2;
            cin >> FPair1;
            cout << "---------------------------------------\nВведите вторую пару:";
            cout << "\n---------------------------------------\n";
            cin >> FPair2;
            cout << "---------------------------------------\n";
            FPair1==FPair2;
            cout << "---------------------------------------\n\n";
            }
    return 0;
}
И еще маленький вопрос, стоит все разделять на файлы? в данном случае считаю что не особо важно, тк программы еще маленькие и это того не стоит.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru