Форум программистов, компьютерный форум 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, 21:49  [ТС]     Наследование и защищенные члены
В некотором приложении определены следующие классы, определяющие роли пользователей этого приложения:
Visitor - незарегистрированный пользователь
User - пользователь с минимальными правами
Manager - пользователь с расширенными правами
Admin - администратор системы
Для любого пользователя системы, за исключением класса Visitor, определены следующие поля:
- логин пользователя - массив char[8]
- имя пользователя - массив типа char произвольной длины
- уровень прав пользователя в системе - целое поле, я его енумом сделал

Для каждого определены следующие правила:
- Визитор не имеет доступа ни к одному полю даже на чтение
- Юзер может только читать свои поля
- Менеджер может читать поля любого Юзера, кроме того может читать и менять свои имя и логин
- Админ соответственно может менять любое любого пользователя

Все классы должны входить в одну иерархию наследования, в которой базовым является Визитор.
Все классы должны иметь виртуальные методы void printInfo(User &user) и bool set(User *user, char *name)
Инфа о printInfo:
- для Визитора - строку ошибки
- для Юзера и Менеджера - собственные имя и логин
- для Админа - имя и логин того, кто передан по ссылке - ну аргументом функции
Инфа о set:
- Юзер - Access denied, return false
- Manager - замена собственного name
- Admin - устанавливает имя того пользователя, указатель на который передается в качестве первого параметра метода, второй параметр - это новое значение. true,false - успешно или нет выполнена операция.
Все, текст задания кончился.

Фраза про одну иерархию меня натолкнула на то, что одно другое наследует столбиком, хотя наверное Визитор можно сделать базовым для каждого из остальных. Тогда и проблема с протектед членами решится.

Далее, насчет переноса аттрибутов - раз уж Визитор будет базовым, логичнее их там оставить имхо.
 
Текущее время: 17:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru