Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4

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

03.07.2009, 14:40. Показов 3047. Ответов 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'


для вижлстудии ДРУГ ничего не значит?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2009, 14:40
Ответы с готовыми решениями:

Перегрузка операций: friend-функция или функция-член класса
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

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

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

9
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
03.07.2009, 14:58
смотри внимательно на имя члена класса, как объявлен и как ты к нему обращаешься:
bootles;
и
bottles;
1
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:03  [ТС]
спасибо! НО это оказалось опечатка(а так хотелось чтобы в этом была проблема) в коде (в студии) всё соответствует.так что ещё варианты?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
03.07.2009, 15:08
Хочешь сказать, что вот такой код студия не скомпилит:
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;
}
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
03.07.2009, 15:13
Только что проверил, все работает.
Ты уверен, что дело именно в операторе << ?
Покажи весь код, возможно ошибка в другом месте.
0
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:16  [ТС]
О!
Твой код компилируеться... (понятно что надо ещё в начале вставить #include <iostream>).
Получаеться что у меня не компилируеться, если всесто std::ostream использовать просто ostream и вначале using namespace std;.

может кто-то объяснить мне почему?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
03.07.2009, 15:19
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;
}
Этот код компилится без проблем, дело в чем-то другом.
Может все таки покажешь ВЕСЬ код?
1
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
03.07.2009, 15:21
CyBOSSeR прав. Он и с using namespace должен компилиться.
0
0 / 0 / 0
Регистрация: 03.07.2009
Сообщений: 4
03.07.2009, 15:24  [ТС]
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.

как жить дальше??????????????????
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
03.07.2009, 15:33
Мистика какая-то...
tas, вообщем, либо поставь сервис-пак на свою студию, либо попробуй еще подключить:
#include <ostream>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2009, 15:33
Помогаю со студенческими работами здесь

Шаблонная функция msvc vs mingw
Всем привет. Сначала думал разместить код в раздел Qt, но кажется дело тут в различии реализаций msvc и mingw. Имеем такую вот...

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

Почему в MSVC++ 2008 компилируется, а в MSVC++ 2010 вылезает много ошибок?
Кстати, перед запуском в 2010 предлагает конвертировать код. Ну а чем эти две студии отличаются, что вызывает большое количество ошибок?

Перегрузка операторов, friend или нет friend?
Всем здравствуйте. Есть такой вопрос: при перегрузке операторов в классе(пусть будут + и = (вообще неважно, за исключением потока)) как и...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru