Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перегрузка << >>, не работает 
:(
    Опции темы
paSha_X
Дата 19.12.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Помогите исправить ошибки........
Код

#include <iostream>
#include <string>
using namespace std;

class base
{    char fam[10];
    int year;
public:
    base(char*f,int y){strcpy(fam,f);year=y;}
    friend ostream& operator << (ostream &os, base &ob);
    friend istream& operator >> (istream &is, base &ob);
};
ostream& operator << (ostream &os, const base ob)
{
    os<<ob.fam<<" "<<ob.year<<endl;
    return os;
}
istream& operator >> (istream &is, base &ob)
{
    is>>ob.fam;
    is>>ob.year;
    return is;
}
int main()
{
    base ob("Petrov",3);
    cin>>ob;
    cout<<ob;
    return 0;
}



PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
KelTron
Дата 19.12.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Возможно ошибка в 13 строке: дожен быть параметр base& ob, а не const base ob


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
paSha_X
Дата 19.12.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Цитата(KelTron @  19.12.2006,  21:08 Найти цитируемый пост)
Возможно ошибка в 13 строке: дожен быть параметр base& ob, а не const base ob 

Не его наоборот не должно быть в 10 строке, я много чего перепробывал, я не знаю тут что-то другое, вроде делал все как надо, смотрел по книжкам..........Меня кидает на том что эти члены являются закрытыми в классе и к ним нельзя иметь доступ напрямую......Помогите пжалста кто знает........
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
KelTron
Дата 19.12.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 38



Если функция объявлена дружественной в данном классе, то она имеет доступ ко всем закрытым членам этого класса.
В коде все правильно, кроме 13 строки (как я уже говорил), я проверил твой код и убедился в этом, теперь убедись и  ты  smile 

Это сообщение отредактировал(а) KelTron - 19.12.2006, 22:37


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
Daevaorn
Дата 19.12.2006, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



paSha_X, слушай KelTron, он прав.
Функции
Код

 friend ostream& operator << (ostream &os, base &ob);

и
Код

ostream& operator << (ostream &os, const base ob)

совершенно разные. Первая объявлена и не опредлена, а вторая объявлена, но не является другом класса. Нужно опредлеиться.
PM MAIL WWW   Вверх
paSha_X
Дата 20.12.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Вот исправил всё как вы мне говорили.........не работает......проблема вся в том, что я всё это делал по книжке, да и по этой теме один раз копировал исправленный код из форума, который по словам его автора работает.......Отсюда вопрос: в чём можжет быть проблема это просто мистика какая-та,................Посмотрите пжалста работает ли у вас этот код, если нет напишите, который у вас запускается без проблем я проверю у себя...........мне оч интересно в чём проблема 
Код

#include <iostream>
#include <string>
using namespace std;

class base
{    char fam[10];
    int year;
public:
    base(char*f,int y){strcpy(fam,f);year=y;}
    friend ostream& operator << (ostream &os, base &ob);
    friend istream& operator >> (istream &is, base &ob);
};
ostream& operator << (ostream &os, const base &ob)
{
    os<<ob.fam<<" "<<ob.year;
    return os;
}
istream& operator >> (istream &is, base &ob)
{
    is>>ob.fam;
    is>>ob.year;
    return is;
}
int main()
{
    base ob("Petrov",3);
    //cin>>ob;
    cout<<ob;
    return 0;
}


Это сообщение отредактировал(а) paSha_X - 20.12.2006, 00:29
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
Xenon
Дата 20.12.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Так:
Код

#include <iostream>
#include <string>
using namespace std;

class base
{    char fam[10];
    int year;
public:
    base(char*f,int y){strcpy(fam,f);year=y;}
    friend ostream& operator << (ostream &os, const base &ob); //Забыл тут const написать
    friend istream& operator >> (istream &is, base &ob);
};
ostream& operator << (ostream &os, const base &ob)
{
    os<<ob.fam<<" "<<ob.year;
    return os;
}
istream& operator >> (istream &is, base &ob)
{
    is>>ob.fam;
    is>>ob.year;
    return is;
}
int main()
{
    base ob("Petrov",3);
    cin>>ob;
    cout<<ob;
    return 0;
}


А проблема, вероятно, в руках ... опечатовшихся smile

Это сообщение отредактировал(а) Xenon - 20.12.2006, 00:49


--------------------
user posted image  
PM MAIL   Вверх
paSha_X
Дата 20.12.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Xenon, Не работает, блин да что это может быыть......((((((
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
Xenon
Дата 20.12.2006, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



paSha_X, что значит не работает? У тебя может только, как и у меня, жаловаться на то, что strcpy() небезопасная функция и то это это ворнинг простой. Какой компилятор?


--------------------
user posted image  
PM MAIL   Вверх
paSha_X
Дата 20.12.2006, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Xenon, Вижуал С++ 6.0 Стандарт Едишин, а как посмотреть версию компилятора?

Добавлено @ 01:08 
Вообщем мне выкидывает 6 ошибок........все они про то что невозможно обрадиться к закрытым элементам класса.........
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
Xenon
Дата 20.12.2006, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



paSha_X, Ну это так, если не написать const, где я тебе подписал - тогда ostream& operator << (ostream &os, const base &ob) не разрешен доступ, поэтому он вякает о закрытых членах.
Кинь лог наконец-то.


--------------------
user posted image  
PM MAIL   Вверх
paSha_X
Дата 20.12.2006, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Дык а что делать то.....

Добавлено @ 01:37 
Я полностью скопировал твой код я НИЧЕГО НЕ ИЗМЕНЯЛ
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
Kirill89
Дата 20.12.2006, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



http://progs.biz/vc/console/lessons/018.aspx - подробно о перегрузке.


--------------------
PM MAIL WWW   Вверх
paSha_X
Дата 20.12.2006, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 5.12.2006
Где: Беларусь, Минск

Репутация: 1
Всего: 2



Всё так и сделано прально я в этом убедился уже давно, вопрос в другом: почему это не проходит и именно у меня, когда у других всё работает без проблем..........(((
ЗС Kirill89, за ссылку спасибо, пригодиться 
PM MAIL WWW IM ICQ AOL YIM MSN   Вверх
Xenon
Дата 20.12.2006, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



paSha_X, ВЫВОД КОМПИЛЯТОРА В СТУДИЮ


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.