Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2015, 19:09   #1
Dark~VIN
Пользователь
 
Аватар для Dark~VIN
 
Регистрация: 30.04.2012
Сообщений: 21
Сообщение MS Visual C++ - Перегрузка операторов I/O в шаблонном классе

Добрый день.

Задание:
Создать шаблонный класс для работы с множествами. Максимальное количество элементов множеств - 65534.
Осуществить перегрузку символов операций: " = " - присваивание.
Кроме того перезагрузить операции ввода из файла и вывода в файл с симфолами " << ", " >> " таким образом:
f << A или A >> f - вывод (запсиь) значения А в файл f
f >> A или A << f - ввод (чтение) значения А из файла.


Не совсем понятно задание, а именно:
-- "для работы с множествами" - это массив неопределенного типа с максимальным кол-вом элементов 65534?
-- символов операций: " = " - у меня и без перегрузки работает присваивание...
-- с перегрузкой << >> не получаеться. Знаю, что не правильно (не могу понять синтаксис).

Код:
#include<iostream>
#include<conio.h>
#include<fstream>
 
using namespace std;
 
template<class T> class plural
{
public:
    plural(long size);
    void showPlural();
    long addValue(T);
    void operator << (plural);
 
private:
    T *data;
    long size;
    long index;
};
 
template<class T>void plural<T>::operator<<(plural p)
{
 
//  FILE *f
//  char *c;
//  c = new char[p.size];
 
    fstream f("text.txt");
    for(int i=0; i<p.size; i++)
    {
 
        f>>p.data[i]; // это вообще бред!
    }
    f.close();  
 
}
 
template<class T> plural<T>::plural(long size)
{
    data = new T[size];
    if (data == NULL)
 
   {
       cout<<"Not enough memory!\n";
       getch();
       exit(1);
   }
 
   plural::size = size;
   plural::index = 0;
}
 
template<class T> void plural<T>::showPlural()
{
   for (long i = 0; i < index; i++)
       cout << data[i] << " ";
   cout << endl;
}
 
template<class T>long plural<T>::addValue(T value)
{
   if (index == size || index > 65534)
       return(-1); // array is full
 
   else
   {
      data[index] = value;
      index++;
      return(0); // okay
   } 
}
 
void main()
 
{
 
    long size;
    cout<<"Enter size of plural: ";
    cin>>size;
    plural<int>iP1(size), iP2(size);
    
    for (long i = 1; i <= size; i++)
    {       
        if(iP1.addValue(rand() % 99)==-1)
        {
            cout<<"\n" << "(" << i << ") Plural is full!\n";
            break;
        }
    }
    
    cout <<"INT 1 VALUES: ";
    iP1.showPlural();
 
    iP2 = iP1; // Worked
 
    cout <<"INT 2 VALUES: ";
    iP2.showPlural();
    //f<<iP1;
 
 
   getch();
}
Завтра будет.
Лучше.
Dark~VIN вне форума Ответить с цитированием
Старый 07.02.2015, 21:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,759
По умолчанию

Цитата:
-- "для работы с множествами" - это массив неопределенного типа с максимальным кол-вом элементов 65534?
Ну есть еще list, set, ...

Цитата:
-- символов операций: " = " - у меня и без перегрузки работает присваивание...
А теперь срочно читать книги или стандарт. Может узнаете, что по дефолту компилятор его создает, но в некоторых случаях есть проблемы с ним.

Цитата:
-- с перегрузкой << >> не получаеться. Знаю, что не правильно (не могу понять синтаксис).
В большинстве случаев их перегружаю как дружественные функции... ах, да, мы ж ничего не читаем по языку...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов (работа с матрицей в шаблонном классе) Начинающий уровень Ostor Общие вопросы C/C++ 2 11.11.2014 19:06
Ошибки в шаблонном классе _SOKOL_ Общие вопросы C/C++ 8 06.02.2013 08:08
перегрузка операторов дружеской ф-ции в шаблонном классе Rayzor Общие вопросы C/C++ 1 24.05.2012 14:29
перегрузка оператора вывода в шаблонном классе Anubys Общие вопросы C/C++ 3 14.03.2012 15:15
Перегрузка оператора в шаблонном классе alex_alpha Общие вопросы C/C++ 0 12.08.2010 21:37