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

  • Автор темы Автор темы grokk
  • Дата начала Дата начала
G

grokk

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

Заранее спасибо за помощь)

[codebox]class Data
{
public:
virtual ~Data() {};
virtual void CheckData() const=0;
//virtual void Print() const=0;
// const Data* operator+ (const Data*);
};

class Int:public Data
{
int i;
public:

Int (int int_num) {i=int_num;};
void CheckData()const {
cout<<"Int number "<<i<<endl;
}
};
class Float:public Data
{
float f;
public:
Float (float float_num) {f=float_num;};
void CheckData()const {
cout<<"Float number "<<f<<endl;
}
};


Data* InputData();[/codebox]


[codebox]#include <iostream>
#include <string>
#include "data.h"
#include "string.h"

using namespace std;

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;
}[/codebox]
 
Джефф Элджер, библиотека программиста (http://rapidshare.com/files/43997307/c_biblioteka_programmista.rar)
Стр. 162.
Вот:
 
Хотя лично мне вариант с case больше симпатизирует :(
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!