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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
grokk
0 / 0 / 0
Регистрация: 13.05.2008
Сообщений: 3
#1

Перегрузка операторов и полиморфизм - C++

13.05.2008, 23:20. Просмотров 1800. Ответов 1
Метки нет (Все метки)

Есть массив указателей Data* в каждой ячейке которого указатель на string,int или float
Никак не получается перегрузить оператор + так чтобы string+string оставался string int+float оставался float int+int -int string+int/float-string

Заранее спасибо,буду рад любой помощи а то уже всю голову изломал

код
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
#ifndef Data_Lst_H
#define Data_Lst_H
#include<iostream>
#include<string>
using namespace std;
enum Type {kInteger,kFloat,kString};
class Data
 {
public:
virtual ~Data() {};
virtual Type CheckData() const=0;
//virtual void Print() const=0;
// virtual Data& operator+(const Data&) = 0;
};
class Int:public Data
 { 
int i;
 Type int_type;
public:
 Int (int int_num)
 {
 i=int_num;
 int_type=kInteger;
 }
 Int (Int& data_int)
 {
 i=data_int.i;
 int_type=data_int.int_type;
 }
 Type CheckData()const { 
 cout<<"Int number "<<i<<endl;
return int_type;
 }
 
// int GetValue()const {return i;}
 // Data& operator+(const Data&);
 
 };
class Float:public Data
 { 
float f;
 Type float_type;
public:
 Float (float float_num)
 {
 f=float_num;
 float_type=kFloat;
 }
 Type CheckData()const 
 { 
 cout<<"Float number "<<f<<endl;
return float_type;
 }
// float GetValue()const {return f;}
// Data& operator+(const Data&)
};
 Data* InputData();
#endif
 
Data* InputData()
 {
int flag,int_num,count=0;
float float_num;
char str[20];
char c;
 Data* item;
do
{
 cout<<"(1)int (2)float (3)string: ";
 cin>>flag;
 }while (flag<1 || flag>3);
switch (flag)
 {
case 1:{
 cout<<"Enter int number ";
 cin>>int_num;
 item=new Int(int_num);
return item;
break;
 }
case 2:{
 cout<<"Enter float number ";
 cin>>float_num;
 item=new Float(float_num);
return item;
break;
 }
case 3:{
 cout<<"Enter String. Max lenght 20 ";
 cin>>str;
 item=new String(str);
return item;
break;
 }
 }
return NULL;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2008, 23:20     Перегрузка операторов и полиморфизм
Посмотрите здесь:

Полиморфизм, перегрузка процедур и функций - C++
Оределите перегруженые функции operation для возведения целых чисел, чиссел с плавающей точкой и чиссел с плавающей точкой двойной точности...

Полиморфизм, виртуальные функции, перегрузка функций - C++
Изменить программу предыдущей лабораторной работы, функцию определяющую бьет ли первая карта вторую, определитель в базовом классе как...

перегрузка операторов - C++
Всем привет. Дошел до темы перегрузки операторов и возникло два вопроса. Первый: Чем отличается вот этот код String ...

Перегрузка операторов. - C++
Существует ли возможность перегрузить оператор так, что бы в main можно было бы осуществлять вызов для объекта класса, содержащего...

Перегрузка операторов - C++
Объяните пожалуйста такой вопрос: Перегрузка операторов в форме внешних функций и методов класса в языке C++. Что делает? и т.д. и т.п.

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

Перегрузка операторов. C++ - C++
Помогите пожалуйста написать программу на тему перегрузка операторов. Задания Унарная операция. Создать объект - связный...

Перегрузка операторов - C++
я учусь перегружать операторы,но не получается,выдает exception class Student { public: Student(void) { name=new char; ...

Перегрузка операторов - C++
Доброй ночи! Изучаю перегрузку операторов. Создал класс Дробь, где в качестве данных выступают числитель и знаменатель дроби. ...

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

Перегрузка операторов - C++
Помогите разобраться в перегрузке операторов. Нужно создать клас Автомобиль в котором определить поля скорость и стоимость и методы доступа...

Перегрузка операторов с++ - C++
Доброго времени суток! Возникло недопонимание. Есть абстрактный класс Integer class Integer { public: void virtual print() = 0;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dioxidin
130 / 97 / 1
Регистрация: 21.11.2007
Сообщений: 544
14.05.2008, 14:17     Перегрузка операторов и полиморфизм #2
Вообще не рекомендуется заниматься таким шаманством (см FAQ'и в разделе c/c++). Мне больше нравится использовать открытый текст с явнями преобразованиями типа:
Код
string S1,S2;
int I2; float F1;
int I1 = (int) I2/F1;
S1 = S2 + IntToStr((int) I1/I2);
...
и так далее. Это более наглядно и менее сложно для освоения другими программистами.
Yandex
Объявления
14.05.2008, 14:17     Перегрузка операторов и полиморфизм
Ответ Создать тему
Опции темы

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