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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
tas
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
#1

friend функция С++ на MSVC 6.0 - C++

03.07.2009, 14:40. Просмотров 2415. Ответов 9
Метки нет (Все метки)

Переписал из книги С. Прата такое :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Port 
{
private:
int bootles;
.......
public:
.......
friend ostream & operator<<(ostream & os, const Port & p);
};
 
ostream & operator<<(ostream & os, const Port & p)
{
os << p.bottles;
return os;
}
А MSVC 6.0 при компиляции выдаёт:
error C2248: 'bottles' : cannot access private member declared in class 'Port'
...\port.h(10) : see declaration of 'bottles'


для вижлстудии ДРУГ ничего не значит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2009, 14:40     friend функция С++ на MSVC 6.0
Посмотрите здесь:

Не работает friend функция - C++
Помогите разобраться почему не присваивается значение объекту из main() через setx и sety. Не меняет значение в самом классе x и y. ...

Friend функция вывода - C++
Есть класс vector.h, есть vector.cpp,вот он: using namespace std; void vector::add(const int x,const int y,const int z,vector...

friend функция в пространстве имен - C++
class Particle{ friend bool FileManager::Particles(const char* FileName, void* Target); /* etc */ } Ругается что &quot;error C2039:...

Friend для friend - C++
всем доброго времени суток, покажу проблему на примере: Class B; class A{ int F; friend B; public: A(){F=0;}; };

Qt Creator or MSVC - C++
Доброе утро. У меня вопрос, не хочу холивара, но стоит выбор между этими двумя IDE. То что qt кроссплатформенна - это я знаю, то что...

Ошибки в MSVC - C++
Пишу курсовой в котором используются некоторые функции windows.h для работы с консолью. Недавно совершенно рабочий ранее код начал выдавать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.07.2009, 14:58     friend функция С++ на MSVC 6.0 #2
смотри внимательно на имя члена класса, как объявлен и как ты к нему обращаешься:
bootles;
и
bottles;
tas
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:03  [ТС]     friend функция С++ на MSVC 6.0 #3
спасибо! НО это оказалось опечатка(а так хотелось чтобы в этом была проблема) в коде (в студии) всё соответствует.так что ещё варианты?
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.07.2009, 15:08     friend функция С++ на MSVC 6.0 #4
Хочешь сказать, что вот такой код студия не скомпилит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Port
{
private:
int bottles;
public:
friend std::ostream &operator<<(std::ostream & os, const Port & p);
};
 
std::ostream &operator<<(std::ostream & os, const Port & p)
{
os << p.bottles;
return os;
}
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.07.2009, 15:13     friend функция С++ на MSVC 6.0 #5
Только что проверил, все работает.
Ты уверен, что дело именно в операторе << ?
Покажи весь код, возможно ошибка в другом месте.
tas
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:16  [ТС]     friend функция С++ на MSVC 6.0 #6
О!
Твой код компилируеться... (понятно что надо ещё в начале вставить #include <iostream>).
Получаеться что у меня не компилируеться, если всесто std::ostream использовать просто ostream и вначале using namespace std;.

может кто-то объяснить мне почему?
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.07.2009, 15:19     friend функция С++ на MSVC 6.0 #7
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
#include <iostream>
 
using namespace std;
 
class Port 
{
private:
  int bootles;
 
  friend ostream& operator<<(ostream& os, const Port & p);
};
 
ostream & operator<<(ostream & os, const Port & p)
{
  os << p.bootles;
  return os;
}
 
int main()
{
  Port port;
 
  cout << port;
 
  return 0;
}
Этот код компилится без проблем, дело в чем-то другом.
Может все таки покажешь ВЕСЬ код?
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.07.2009, 15:21     friend функция С++ на MSVC 6.0 #8
CyBOSSeR прав. Он и с using namespace должен компилиться.
tas
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:24  [ТС]     friend функция С++ на MSVC 6.0 #9
CyBOSSeR, да это и есть почти весь код

так. значит просто взял и скопировал ТВОЙ код полностью:

error C2248: 'bootles' : cannot access private member declared in class 'Port'
....\main.cpp(8) : see declaration of 'bootles'
....\main.cpp(23) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.

как жить дальше??????????????????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2009, 15:33     friend функция С++ на MSVC 6.0
Еще ссылки по теме:

компиляция gcc и MSVC - C++
Привет всем. Объясните, почему один и тот же код #include &quot;stdafx.h&quot; #include &lt;vector&gt; #include &lt;iostream&gt; #include...

Std::basic_string в MSVC - C++
Как обстоят дела с stl строками в MS Visual C++ (например в 2013 версии). Конкретно интересует, используется ли для них COW механизм?...

Лимит char в msvc - C++
В настройках не ставил /J. Однако почему то компилятор не выдаёт ошибку если пишу: char ftp = -100; char ftp = 250; По дефолту char...

MinGW vs MSVC пакеты - C++
Уже год &quot;для себя&quot; кодю в консоли на MinGW. А тут понадобилось собрать и переделать чужую DLL с COM-технологиями. Она была написана на...


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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
03.07.2009, 15:33     friend функция С++ на MSVC 6.0 #10
Мистика какая-то...
tas, вообщем, либо поставь сервис-пак на свою студию, либо попробуй еще подключить:
#include <ostream>
Yandex
Объявления
03.07.2009, 15:33     friend функция С++ на MSVC 6.0
Ответ Создать тему
Опции темы

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