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

Наследование и защищенные члены - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс для работы с матрицами 2х2 http://www.cyberforum.ru/cpp-beginners/thread275028.html
Доброго времени суток. Очень нужна ваша помощь . Мне нужно создать класс , обеспечивающий работу с матрицами 2х2 . В общем то , описание класса есть , меню для диалога с пользователем есть . Проблема в правильном вызове функций . Я никогда не занимался ООП и очень на вас надеюсь. Вот архив со всем проектом . Программа запускается , но пока ничего не делает ) Заранее спасибо за внимание и за...
C++ Векторное произведение Помогите пожалуйста написать программу на ВС31 или DevCpp, вот условие ввести коорбинаты N векторов на плоскости. Написать функцию, определяющую модуль векторного произведения двух векторов. Используя эту функцию найти максимальный модуль векторного произведения пары векторов. Алгоритм осуществить используя структуры. http://www.cyberforum.ru/cpp-beginners/thread275020.html
C++ Модули. Многофайловые проекты
Определить функцию, возвращающую НОД нескольких чисел. Выполнить перегрузку функции для следующих типов параметров: 7.1. Два параметра типа int. 7.2. Два параметра типа long. 7.3. Два параметра типа float. 7.4. Два параметра типа double.
Перегрузка функций C++
Определить функцию, возвращающую количество недель до конца года. Выполнить перегрузку функции для следующих типов параметров: 7.1. Структура «дата» (год, месяц, день). 7.2. Три целочисленных параметра: год, месяц, день. 7.3. Два целочисленных параметра: месяц, день (считать передаваемые числа датой текущего года).
C++ Max и Min в Си++ http://www.cyberforum.ru/cpp-beginners/thread275004.html
сформировать одномерный массив целых чисел используя ДСЧ. расспечатать полученный массив поменять местами мах и мин удалить из массива все эл. превышающие его среднее значение более чем на 10% распечатать полученный массив. #include <iostream.h> #include <conio.h>
C++ std::list присвоение указателю на структуру итератора Написал пример для показа проблемы // Почему я не могу указателю на структуру присвоить итератор? // Для sdt::vector это работает а для std::list нет #include "stdafx.h" #include <iostream> #include <list> #include <vector> using namespace std; подробнее

Показать сообщение отдельно
Selendis
1 / 1 / 0
Регистрация: 15.02.2011
Сообщений: 43
13.04.2011, 19:20  [ТС]     Наследование и защищенные члены
Deviaphan: Изначально суть такая - Админ, как суперпользователь, в своем методе set может изменять значение поля name в переданном объекте User на второй параметр метода Admin::set.
Единственный вариант, который я тут вижу - это чтобы Get name был char& getname(), т.е. предоставлял совершенно небезопасный доступ к члену, который, кстати, может хоть private - при таком методе по барабану совершенно. Но это плохо.

А если говорить об обычном методе getName - а на кой фиг там такой метод нужен? Если в User будет public метод, возвращающий имя и public, разрешающий изменение, то это бред - User не может его менять, как и Manager.

Если метод будет protected, то я его вот таким вот образом - в Admin::set - не смогу вызвать так же, как и достать name собственно сейчас.
Я могу его сделать виртуальным, но мне от этого ни холодно, ни жарко - вызываться-то он будет для передаваемого объекта, т.е. User или Manager.

Просто может там static_cast'ом привести к правильному типу, используя значение enum члена?

Решение, которое я вижу - это объявить в User "friend class Admin". Но это бред бредовый - "давайте объявим в родителе то, что дети к нему дружествены и могут достучаться до protected членов".
 
Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru