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

Пример с книги, ругается на istream и ostream - C++

Восстановить пароль Регистрация
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
03.09.2013, 16:20     Пример с книги, ругается на istream и ostream #1
Создание класса массива с перезагрузкой операций, ругается на istream и ostream.
Переписал все с книги, но VS2010 не компилит.

Array.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
#include <iostream>
#ifndef ARRAY_H
#define ARRAY_H
class Array
{
    friend ofsream &operator<<(ostream &,const Array &);
    friend ifsream &operator>>(istream &, Array & );
 
public :
    Array(int = 10);
    Array(const Array &);
    ~Array();
    int Getsize()const;
    const Array & operator =(const Array&);
    int operator ==(const Array &) const;
    int operator !=(const Array &)const ;
    int &operator [] (int);
    static int GetArrayCount();
private:
    int *ptr;
    int size;
    static int arrayCount;
};
#endif

Array.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
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
98
99
100
101
102
103
#include "Array.h"
#include <iostream>
#include "stdlib.h"
#include "assert.h"
 
int Array::arrayCount=0;
 
Array::Array(int arraySize)
{
    setlocale(LC_ALL,"Russian");
    ++arrayCount;
    size=arraySize;
    ptr= new int[size];
    assert(ptr!=0);
    std::cout<<"Конструктор Класса"<<"\n";
    for(int x=0;x<size;x++)
        ptr[x]=0;
    
}
Array::Array(const Array& init)
{
    setlocale(LC_ALL,"Russian");
++arrayCount;
size=init.size;
ptr= new int[size];
assert(ptr!=0);
std::cout<<"Конструктор Класса Копии"<<"\n";
for(int x=0;x<size;x++)
    ptr[x]=init.ptr[x];
}
Array::~Array()
{
    --arrayCount;
    delete [] ptr;
}
int Array::Getsize()const 
{return size;}
const Array &Array::operator=(const Array& right)
{
    setlocale(LC_ALL,"Russian");
    std::cout<<"Перезагрузка оператора = "<<"\n";
    if(&right!=this)
    {
        delete [] ptr;
        size=right.size;
 
        ptr=new int[size];
        
        for(int x=0;x<size;x++)
    ptr[x]=right.ptr[x];
    }
    return *this
}
int Array:: operator==(const Array &right)const
{
    setlocale(LC_ALL,"Russian");
    std::cout<<"Перезагрузка оператора =="<<"\n";
    if(size!=right.size)
        return 0;
    for( int x=0; x<size;x++)
    {
        if(ptr[x]!=right.ptr[x])
            return 0;
    }
    return 1;
}
int Array:: operator!=(const Array &right)const
{
    setlocale(LC_ALL,"Russian");
 
    std::cout<<"Перезагрузка оператора != "<<"\n";
        if(size!=right.size)
        return 1;
    for( int x=0; x<size;x++)
    {
        if(ptr[x]!=right.ptr[x])
            return 1;
    }
    return 0;
}
int &Array::operator[](int subscript)
{
    assert (0 <= subscript && subscript <size);
    return ptr[subscript];
}
istream  &operator>>(istream &input, Array &a)
{
    for(int x=0;x<a.size;x++)
    input>>a.ptr[x];
    return input;
}
ostream  &operator<<(ostream & output,const Array &a)
{
    for (int x=0;x<a.size;x++)
    {
        output<<a.ptr[x]<<" ";
        if((x+1)%10==0)
            output<<"/n";
    }
    if(x%10!=0)
            output<<"/n";
    return output;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.09.2013, 16:30     Пример с книги, ругается на istream и ostream #2
C++
1
2
3
4
5
6
7
8
9
#ifndef ARRAY_H
#define ARRAY_H
 
#include <iostream>
 
class Array
{
    friend std::ofsream& operator << (std::ostream&, const Array&);
    friend std::ifsream& operator >> (std::istream&, Array&);
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
03.09.2013, 16:37  [ТС]     Пример с книги, ругается на istream и ostream #3
Проблема не решилась(

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::istream &operator>>(std::istream &input, Array &a)
{
    for(int x=0;x<a.size;x++)
        input>>a.ptr[x];
    return input;
}
std::ostream &operator<<(std::ostream & output,const Array &a)
{
    for (int x=0;x<a.size;x++)
    {
        output<<a.ptr[x]<<" ";
        if((x+1)%10==0)
            output<<"/n";
    }
    if(x%10!=0)
            output<<"/n";
    return output;
}


Добавлено через 1 минуту
Ошибки

Кликните здесь для просмотра всего текста
> Array.cpp
1>c:\задачки\array\array\array.h(6): error C2039: ofsream: не является членом "std"
1>c:\задачки\array\array\array.h(6): error C2143: синтаксическая ошибка: отсутствие ";" перед "&"
1>c:\задачки\array\array\array.h(6): error C2433: ofsream: "friend" не разрешается для объявлений данных
1>c:\задачки\array\array\array.h(6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\задачки\array\array\array.h(6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\задачки\array\array\array.h(6): error C2804: бинарный "operator <<" имеет слишком много параметров
1>c:\задачки\array\array\array.h(7): error C2039: ifsream: не является членом "std"
1>c:\задачки\array\array\array.h(7): error C2143: синтаксическая ошибка: отсутствие ";" перед "&"
1>c:\задачки\array\array\array.h(7): error C2433: ifsream: "friend" не разрешается для объявлений данных
1>c:\задачки\array\array\array.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\задачки\array\array\array.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\задачки\array\array\array.h(7): error C2804: бинарный "operator >>" имеет слишком много параметров
1>c:\задачки\array\array\array.cpp(53): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\задачки\array\array\array.cpp(88): error C2248: Array::size: невозможно обратиться к private член, объявленному в классе "Array"
1> c:\задачки\array\array\array.h(21): см. объявление "Array::size"
1> c:\задачки\array\array\array.h(5): см. объявление "Array"
1>c:\задачки\array\array\array.cpp(89): error C2248: Array:tr: невозможно обратиться к private член, объявленному в классе "Array"
1> c:\задачки\array\array\array.h(20): см. объявление "Array:tr"
1> c:\задачки\array\array\array.h(5): см. объявление "Array"
1>c:\задачки\array\array\array.cpp(94): error C2248: Array::size: невозможно обратиться к private член, объявленному в классе "Array"
1> c:\задачки\array\array\array.h(21): см. объявление "Array::size"
1> c:\задачки\array\array\array.h(5): см. объявление "Array"
1>c:\задачки\array\array\array.cpp(96): error C2248: Array:tr: невозможно обратиться к private член, объявленному в классе "Array"
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.09.2013, 16:41     Пример с книги, ругается на istream и ostream #4
Цитата Сообщение от MousePro Посмотреть сообщение
Проблема не решилась(
а ты читать умеешь? опечатка же
Цитата Сообщение от MousePro Посмотреть сообщение
ofsream
ofstream
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 16:44     Пример с книги, ругается на istream и ostream #5
а не нужно еще эту библ. подключить?
C++
1
include"fstream"
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
03.09.2013, 16:50  [ТС]     Пример с книги, ругается на istream и ostream #6
Вроде бы нет)
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 16:56     Пример с книги, ругается на istream и ostream #7
Просто я когда работал с ofstream i ifstream, то подключал, потому что это базовые классы библ. fstream и у меня, кстати, тоже MVS2010, только не знаю имеет-ли это значение
Rogov
8 / 8 / 1
Регистрация: 06.07.2013
Сообщений: 21
03.09.2013, 16:59     Пример с книги, ругается на istream и ostream #8
ммм...
C++
1
using namespace std;
пропробуй дописать.

+ у тебя перегруженные операторы >> и << стоят в privat, перенеси их в public
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
03.09.2013, 17:01  [ТС]     Пример с книги, ругается на istream и ostream #9
Цитата Сообщение от Jupiter Посмотреть сообщение
а ты читать умеешь? опечатка же
тогда уже ostream
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
03.09.2013, 17:02     Пример с книги, ругается на istream и ostream #10
Цитата Сообщение от Rogov Посмотреть сообщение
ммм...
Код C++
1
using namespace std;
пропробуй дописать
не думаю, что нужно, он же всюду пишет вручную std::cout...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 17:04     Пример с книги, ругается на istream и ostream
Еще ссылки по теме:

Пример с книги не компилируется! C++
C++ пример из книги
Friend ostream& operator<<(ostream& stream, CArr& obj); C++

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

Или воспользуйтесь поиском по форуму:
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
03.09.2013, 17:04  [ТС]     Пример с книги, ругается на istream и ostream #11
Цитата Сообщение от Rogov Посмотреть сообщение
ммм...
C++
1
using namespace std;
пропробуй дописать.

+ у тебя перегруженные операторы >> и << стоят в privat, перенеси их в public
std:: я сам дописываю
Там друзья класса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
friend  std::ostream &operator<<(std::ostream&,const Array&);
friend  std::istream &operator>>(std::istream&, Array& );
 
std::istream &operator>>(std::istream &input,  Array &a)
{
    for(int x=0;x<a.size;x++)
    {
        input>>a.ptr[x];
    }
    return input;
}
std::ostream &operator<<(std::ostream &output, const Array &a)
{
    for (int x=0;x<a.size;x++)
    {
        output<<a.ptr[x]<<" ";
        if((x+1)%10==0)
            output<<"/n";
    }
    //if(x%10!=0)
            //output<<"/n";
    return output;
Вот рабочий вариант
Yandex
Объявления
03.09.2013, 17:04     Пример с книги, ругается на istream и ostream
Ответ Создать тему
Опции темы

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