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

Перегрузка << и >> - C++

Восстановить пароль Регистрация
 
ARTLINE-NN
 Аватар для ARTLINE-NN
1 / 1 / 0
Регистрация: 30.03.2012
Сообщений: 82
28.05.2012, 21:32     Перегрузка << и >> #1
помогите сделать так чтобы << и >> в int main() работали...

Printers.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
24
25
26
27
28
29
30
31
class Printers
{
    public:
    Printers::Printers(void);
    Printers(char *marka1, int speed1, char*quality1, char*Smetod1, char*tipmat1);
    Printers(const Printers&r);
    virtual ~Printers(){}
    virtual void Print() const;
    virtual char*marka() const;
    virtual char*quality() const;
    virtual int speed() const;
    virtual char*Smetod() const;
    virtual char*tipmat() const;
    void change_color(char *res);
    int change_kol();
    Printers &operator=(const Printers&r);
    Printers &operator++();
    Printers operator++(int);
    Printers &operator--();
    Printers operator--(int);
    Printers operator+ (const Printers&r)const;
    Printers operator -();
    friend std::ostream &operator<<(std::ostream&,const Printers&r);
    friend std::istream&operator>>(std::istream&,Printers&r);
protected:
    char *marka1;
    int speed1;
    char*quality1;
    char*Smetod1; 
    char*tipmat1;
};
Printers.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
#include "Printers.h"
#include <iostream>
#include <string.h>
#include "Matrix.h"
#include "Str.h"
#include "Laz.h"
using namespace std;
 
 
 
Printers::Printers(void)
{   
int i, j;
Printers *p[3];
p[0] = new Matrix ("Seiko", "low", 40);
p[1] = new Str ("BJ-80", "medium", 60, "Termo");
p[2] = new Laz ("LaserJet", "high", 72, "Piezoelectric", "Suvenir");
for (int i = 0; j<3; i++)
p[i]->Print();
cout <<p[i]->marka();
cout <<p[i]->speed();
cout <<p[i]->quality();
cout <<p[i]->Smetod();
cout <<p[i]->tipmat();
}

и сам int main()
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
int main()
{
    Printers a1("LaserJet", 72, "high", "Piezoelectric", "Suvenir");
    a1.Print();
    a1.change_kol();
    a1.Print();
    a1++;
    cout<<a1<<endl;
    ++a1;
    cout<<a1<<endl;
    a1--;
    cout<<a1<<endl;
    --a1;
    cout<<a1<<endl;
    Printers a2;
    cin>>a2;
    cout<<a2<<endl;
    a1=a1+a2;
    cout<<a1<<endl;
    a2=-a2;
    cout<<a2<<endl;
    a2.change_color("Metall");
    cout<<a2<<endl;
    Matrix m1;
    m1.Print();
    m1.marka();
    m1.Print();
    Str s1;
    s1.Print();
    s1.change_color("Gold");
    s1.Print();
    const int n=3;
    Printers* p[n];
    p[0] = new Matrix;
    p[1] = new Str;
    p[2] = new Laz;
    for(int i=0;i<n;i++)
    {
        p[i]->Print();
        delete p[i];
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 21:32     Перегрузка << и >>
Посмотрите здесь:

C++ C++ Перегрузка
Перегрузка в c++ C++
C++ перегрузка []
C++ Перегрузка +
C++ Перегрузка ~
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
28.05.2012, 21:38     Перегрузка << и >> #2
using namespace std;
????

Добавлено через 54 секунды
а что не работает, какие ошибки?
ARTLINE-NN
 Аватар для ARTLINE-NN
1 / 1 / 0
Регистрация: 30.03.2012
Сообщений: 82
28.05.2012, 21:42  [ТС]     Перегрузка << и >> #3
Taras_Z, есть)) я просто его не выделил)
он и в мейне и в printers.cpp есть!

Добавлено через 2 минуты
Taras_Z,
Ошибки:
ostream: не является членом "std"
синтаксическая ошибка: отсутствие ";" перед "&"
ostream: "friend" не разрешается для объявлений данных
отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
ostream: не является членом "std"
синтаксическая ошибка: идентификатор "ostream"
отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
бинарный "operator <<" имеет слишком мало параметров
istream: не является членом "std"
синтаксическая ошибка: отсутствие ";" перед "&"
istream: "friend" не разрешается для объявлений данных
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
28.05.2012, 21:46     Перегрузка << и >> #4
в заголовке подключили iostream?
реализация всех операторов у вас естб?
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
28.05.2012, 21:48     Перегрузка << и >> #5
возможно в .h
#include <iostream>
ARTLINE-NN
 Аватар для ARTLINE-NN
1 / 1 / 0
Регистрация: 30.03.2012
Сообщений: 82
28.05.2012, 22:53  [ТС]     Перегрузка << и >> #6
Taras_Z,
Если поставить #include <iostream> и исправить несколько ошибок.
то всё равно осталось подчёркнутым a1 и a2
пишет вот это: Printers: невозможно создать экземпляр абстрактного класса

Добавлено через 13 минут
помогите?)))

Добавлено через 27 минут
ну кто нибудь?
Yandex
Объявления
28.05.2012, 22:53     Перегрузка << и >>
Ответ Создать тему
Опции темы

Текущее время: 16:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru