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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Dmitry99
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 9
#1

Получить доступ к родительскому классу - C++

28.12.2011, 13:10. Просмотров 2046. Ответов 11
Метки нет (Все метки)

Есть класс;
C++
1
2
3
4
5
6
7
8
9
10
11
12
class slave{
void print();
};
 
 
class master{
private:
 Slave a;
public:
void print();
 
};
Как из
C++
1
slave::print()
вызвать метод
C++
1
master::print()
?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2011, 13:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить доступ к родительскому классу (C++):

Получить доступ к обьекту класса в друж. функц. этому классу при этом не передавая этот объект в качестве параметра - C++
Допустим имеется класс lass1 для него определена дружественная функция friend1. Вопрос можно ли как то получить доступ к объекту который не...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

Доступ к классу как к контейнеру - C++
Здравствуйте, не подскажите как нужно определить класс-контейнер, что бы можно было получать данные путем такого обращения : Подробнее:...

Доступ к производному классу через методы в базовом - C++
Доброго дня! Прошу помощи в решении моей проблемы. Словесно проблему можно описать так. У меня есть три класса: 1-й класс - базовый...

ООП как можно ограничить доступ к методу производного классу - C++
Покажите пожалуйста небольшой пример как это можно реализовать

Получить доступ в приват - C++
Не получается получить доступ к полям привата. Вот написал такой код на с++. #include <iostream> using namespace std; class...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.12.2011, 13:11 #2
Dmitry99, Не узрел наследования. Дабы вызвать перекрытый в потомке метод базового класса, достаточно вызвать этот метод полностью квалифицировав, т.е. в данном случае
C++
1
master::print()
при условии, что slave наследуется от master.
0
Dmitry99
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 9
28.12.2011, 13:13  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Dmitry99, Не узрел наследования. Дабы вызвать перекрытый в потомке метод базового класса, достаточно вызвать этот метод полностью квалифицировав, т.е. в данном случае
C++
1
master::print()
при условии, что slave наследуется от master.
Они не наследуются. Я просто не удачно выбрал названия методов.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.12.2011, 13:20 #4
Dmitry99, Как вы из slave собрались вызвать метод класса master, если slave о нем ничего не знает и функция print не является статической?
Ну и главный вопрос. А зачем?
0
Dmitry99
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 9
28.12.2011, 13:30  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Dmitry99, Как вы из slave собрались вызвать метод класса master, если slave о нем ничего не знает и функция print не является статической?
Ну и главный вопрос. А зачем?
У меня есть класс - игровое поле. и класс монстр. В классе игра есть динамический массив типа монстр.
Класс игры содержит в себе лабиринт и метод, который сообщает о наличии стены в конкретном месте.
Монстр умеет себя отрисовывать и выбирать направление движения, но для того чтобы знать куда ходить ему нужно иметь доступ к классу игра.
Сейчас я решил так, что в классе монстр завел поле типа игра и при создании присваиваю ссылку на игру.
Препод не доволен, говорит что классы "циклически (опосредованно) завясят друг от друга - это тоже очень грубая ошибка проектирования."
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.12.2011, 13:46 #6
Dmitry99, Препод прав. Архитектура не айс.

Лучше будет что-то вроде такого.

Класс Монстр.
Класс Игровое поле.
Класс Игра.

Класс Игра содержит в себе массив монстров + игровое поле. В игровом поле есть метод, сообщающий есть-ли стена в конкретном месте. В монстре хранится ссылка на игровое поле.

НО.

Монстр вообщем-то не должен отрисовывать сам себя. Он монстр, а не художник.
0
silent_1991
28.12.2011, 13:58
  #7

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Монстр вообщем-то не должен отрисовывать сам себя. Он монстр, а не художник.
Хм, а полиморфизм классически объясняется на том примере, что каждая фигура умеет отрисовывать себя...

0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.12.2011, 14:00 #8
silent_1991, Объясняется да. Но использовать... Ну даже не знаю. По логике - это несколько странно, отрисовывающий себя монстр, не так-ли? Куда логичнее выглядит класс, который отвечает за отрисовку, разве нет? С другой стороны - это по логике. По коду отрисовка объектом самого себя, в целом является приемлемой вещью.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.12.2011, 14:03 #9
ForEveR, не думаю... Есть куча графических элементов, и что, нужен класс, который умеет отрисовывать их все? Т.е. при добавлении нового элемента нужно лезть в код класса и исправлять его? Пусть лучше все графические элементы реализуют интерфейс Drawable, а какой-нибудь Manager просто проходит по всем элементам и вызывает метод draw.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.12.2011, 14:04 #10
silent_1991, Ну вот. С интерфейсом я соглашусь, ибо выходит, что класс реализует некую сущность, расширяя ее и чисто логически не является рисовальщиком сам по себе.
1
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.12.2011, 14:38 #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
Есть куча графических элементов, и что, нужен класс, который умеет отрисовывать их все?
Есть куча геометрических фигур для начала Ну а потом уже всякие менеджеры, которые занимаются рисованием.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.12.2011, 15:29 #12
fasked, под графическими элементами я имел ввиду всё, что может быть отображено в программе. Будь то геометрические фигуры, монстры, скроллбары на формочке...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2011, 15:29
Привет! Вот еще темы с ответами:

Получить доступ к памяти - C++
struct df{ unsigned f1: 1; unsigned f2: 1; unsigned f3: 6; }; df gh; df* pointer=(df*)0x50000000; int _tmain(int...

Указание родительскому методу брать данные конечного Наследника - C++
Есть примерный такой код. Как указать чтобы родительский метод брал данные конечного наследника ? Чтобы не менять изначальную...

Получить доступ к полям структуры - C++
здравствуйте,если свести проблему к локальному контексту, то есть код примерно такой: struct zeus { template<typename...

Не могу получить доступ к члену класса - C++
Недавно начал изучать C++ и SDL и появилась проблема с кодом. Я могу создать поверхность(см. код) с помощь thisFunctionWoks, но не могу...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.12.2011, 15:29
Ответ Создать тему
Опции темы

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