IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Не могу разобраться с ошибками, C++\eclipse
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Есть такой вот класс :
Team.h :

#ifndef TEAM_H_
#define TEAM_H_
#include <iostream>
#include <string>

using namespace std;

class Team
{
friend ostream& operator << (ostream&, const Team& );
friend istream& operator >> (istream&, const Team& );
public:
string TeamName;
int win;
int lose;
int draw;
int score;
Team ();
};



#endif /*TEAM_H_*/


Реализация :
Team.cpp
#include "Team.h"
using namespace std;

Team::Team()
{
score=win*3+draw;
}

ostream& operator << (ostream& outs, const Team& ob)
{
outs<< ob.TeamName;
return outs;
}

istream& operator >> (istream& ins, const Team& ob)
{
cout <<"Input team name : ";
ins >> ob.TeamName; // тут ошибка.Почему?разобрался.нет,не разобрался..не понимаю почему.
//no match for 'operator>>' in 'std::cin >> ob->Team::TeamName'

return ins;
}



Скажу сразу - до сих пор до конца не разобрался для чего нужны директивы #ifndef. Вроде бы они отменяют повторную компиляцию кода до #endif.

Сообщение отредактировано: Andrewshkovskii -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
ins >> ob.TeamName; // тут ошибка.Почему?
Ты меня извини, но передавать в оператор константную ссылку, и в то же время пытаться изменить объект - как-то не вяжется одно с другим...

Вот так:
istream& operator >> (istream& ins, Team& ob)
{
cout <<"Input team name : ";
ins >> ob.TeamName;
return ins;
}
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


хвщ..вот это даsmile.gif))извините..Спасибоsmile.gif на автомате не задумываясь написал..
хм...но после этого исправления появилось ещё "море" ошибок.

#include "Team.h"
using namespace std;

Team::Team() // тут,говорит о мульти объявлении.
{
score=win*3+draw;
}

ostream& operator << (ostream& outs, const Team& ob) // и тут соотвественно
{
outs<< ob.TeamName;
return outs;
}

istream& operator >> (istream& ins, const Team& ob)// и тут.что не так я написал в заголовочном файле?
{
cout <<"Input team name : ";
ins >> ob.TeamName;
//no match for 'operator>>' in 'std::cin >> ob->Team::TeamName'

return ins;
}


Сообщение отредактировано: Andrewshkovskii -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
после этого исправления появилось ещё "море" ошибок.
blink.gif GCC 3.4.5 + CodeBlocks - полет нормальный, после удаления слова const (и при определении, и при реализации) все компилируется без ошибок...

Цитата
тут,говорит о мульти объявлении.
Мультиобъявлении ЧЕГО?

Цитата
и тут.что не так я написал в заголовочном файле?
Я тебе уже написал выше, что не так... Второй раз я говорить не буду...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


да это я потом уже разобрался,но всеравно спасибо.Я очень невнимателен - хз как с этим боротьсяsmile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.03.2021 2:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name