[C++] Friends, forward declarations & invalid uses of incomplete types
А вообще в примере у тебя переменная принадлежит экземпляру, а не самому классу. Ты static не забыл?
Вот и развлекаюсь.
Причем тут вообще protected? friend? до описания нельзя полями пользоваться. Можно делать только некоторые вещи, к примеру объявить указатель/ссылку на A.
перегруженные функции-друзья.
struct A { friend void f; friend void f(int); };done
friend нарушает инкапсуляцию.Это неправда.
Так и сделаю.
Спокойной ночи, друзья.
всё правильно, какие задания такие и решения
задание "написать программу с использованием iostream". решение
#include <iostream>
int main {return 0;}
=) никогда не понимал чего преподы пытаются такими заданиями добиться...
В main за тебя компилятор "return 0;" допишет, зачем столько лишней ручной работы...
вот после таких и нервничаешь, собирая 10ую библиотеку, когда она выдаёт кучу warning'ов
Это по стандарту.
я не про этот случай, я про "лишнюю ручную работу"
за тебя компилятор "return 0;" допишеткстати в C++ да, а вот в C - нет
[xoft ~]$ cat main_no_return.c
int main{}
[xoft ~]$ gcc -O3 -o main_no_return main_no_return.c
[xoft ~]$ ./main_no_return; echo $?
96
так что я как-то привык ему такие вещи не доверять
Кстати! У меня телепат-мод проснулся! Мне кажется, что просили с дружественными перегруженными операторами, а не просто функциями сделать.
Формальная часть задания: 1й класс — независимый, должен содержать указатель (int*, char* или другой). Класс должен быть абстрактным. Для этого класса должны быть определены: конструктор, конструктор копирования, деструктор, оператор присваивания.¶
2й и 3й классы — наследники 1-го класса.¶
Должны использоваться 4 (минимум) перегруженных функции, включая какой-либо унарный оператор и хотя бы один бинарный оператор. Некоторые из функций должны быть перегружены как члены класса, некоторые — как друзья класса.¶
В классах должны быть определены виртуальные функции. Они должны использоваться в программе.¶
В программе присутствует функция main, в которой объекты создаются и взаимодействуют. Пользователь должен иметь возможность видеть результат создания и взаимодействия объектов (информация о выполненных действиях должна печататься на экран).¶
Оставить комментарий
Nikas
Хочется объявить в классе А protected переменную, после чего сделав функцию из класса Б её другом получить из этой функции доступ к той самой переменной.Ну вроде так:
По понятным причинам сделать это не удаётся.
Нарыл в стауструпе 11.5.1 (280 стр. в английском 3ем специальном издании) — тепло, но не разобрался, прогу сдавать сегодня днём.
Вопрос: существует ли адекватная конструкция, позволяющая проделать вышеописанную махинацию?