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

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

Войти
Регистрация
Восстановить пароль
 
ARTLINE-NN
1 / 1 / 0
Регистрация: 30.03.2012
Сообщений: 82
#1

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

28.05.2012, 21:32. Просмотров 408. Ответов 5
Метки нет (Все метки)

помогите сделать так чтобы << и >> в 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 21:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка << и >> (C++):

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Перегрузка - C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication17 { ...

Перегрузка - C++
ребята помогите сделать тут перегрузку очень нужно :) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt;...

перегрузка - C#
помогите сделать перегрузку пожалуйста... static public void Method2() { const byte m = 5, n = 7; ...

Перегрузка в c++ - C++
Собственно для чего нужна перегрузка функций или операторов ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
28.05.2012, 21:38 #2
using namespace std;
????

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

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

Добавлено через 27 минут
ну кто нибудь?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2012, 22:53
Привет! Вот еще темы с ответами:

Перегрузка - C++
даны две перегрузки: 1. постфиксная для ++ чтобы прибавить 1 к height и к width Rectang &amp; operator ++(int) {height++; width++; ...

перегрузка <<, >>, [] - C++
правильно ли я перегрузил &gt;&gt;, &lt;&lt;, !?? у меня такое ощущение что неправильно, если всатвил стороку сout&lt;&lt;&quot;fvfsvdv&quot;&lt;&lt;endl; вместо ...

перегрузка в с++ - C++
Помогите нужно очень срочно!недавно писал о перегрузке есть перегрузка постфиксного инкремента Rectang &amp; operator ++(int) ...

Перегрузка - C++
Дали задачу, на перегрузку строк вот один из операторов который надо перегрузить. stringg&amp; operator+=( stringg a) { char...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.05.2012, 22:53
Ответ Создать тему
Опции темы

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