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

C++

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,687
#1

Стоит ли прятать интерфейсные методы внутри класса? - C++

06.11.2015, 16:20. Просмотров 299. Ответов 2
Метки нет (Все метки)

1) Стоит ли прятать интерфейсные методы внутри класса, чтобы обеспечить доступ к интерфейсу интерфейса только с помощью явного приведения указателя на объект к интерфейсному указателю.
C++
1
2
3
4
5
6
7
8
9
10
class Interface
{
public:
    virtual void f() = 0;
}
class Bar : public Interface
{
private:
    virtual void f( ){};
}

2) Сразу же по п.1 возникает проблема:
промолчит если класс перестал реализовывать данный интерфейс
C++
1
2
3
IFoo* ptr = dynamic_cast<Foo*>(m_bar);
if(ptr)
    ptr->canDo();
тут же не даст скомпилить
C++
1
IFoo* ptr = m_bar;
Какой способ предпочитаете вы?

3) стоит ли писать префиксную приставку методам интерфейсса
C++
1
virtual void ICanDraw_draw() = 0;
для обеспечения перекрыания совпадения имён методов разных интерфейсов и читаемость кода.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2015, 16:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стоит ли прятать интерфейсные методы внутри класса? (C++):

Методы строкового класса - C++
Нужно разработать реализацию класса string, позволяющего оперировать с текстовыми строками, как с базовыми типами данных. Класс должен...

Использовать private члены класса внутри static ф-ий этого же класса. - C++ Builder
Все привет! Такая вот проблема. Есть класс (естественно тестовый, для пример): class SCRIPT{ private: SCRIPT(); ...

Передача значения класса в функцию внутри класса - C++ Builder
Всем привет. Вот столкнулся с таким вопросом Как передать значение класса в функцию внутри класса? вопрос не понятный попробую обьяснить...

Выделить слово, внутри которого стоит курсор - C++ Builder
Здравствуйте, пользователь в memo ставит курсор внутрь какого-то слова, как выделить это слово целиком?

Указатели на методы класса - C++ Builder
Как вот это откомпилить в C++ Builder WindowClass.lpfnWndProc = &amp;CMainWindow::OnEvent; при попытке компиляции имеем ошибку: ...

Создание массива указателей на методы класса TForm2 - C++ Builder
Здравствуйте! Разрабатываю приложение, состоящие из трех форм. Первая форма представляет собой меню из которого вызывается вторая или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hoggy
Нарушитель
6589 / 2770 / 476
Регистрация: 15.11.2014
Сообщений: 6,123
Завершенные тесты: 1
07.11.2015, 01:03 #2
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Стоит ли прятать интерфейсные методы внутри класса, чтобы обеспечить доступ к интерфейсу интерфейса только с помощью явного приведения указателя на объект к интерфейсному указателю.
от ситуации зависит жеж.

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
стоит ли писать префиксную приставку методам интерфейсса
жуть какая то
0
Perfilov
264 / 165 / 43
Регистрация: 25.02.2015
Сообщений: 435
08.11.2015, 00:16 #3
ихмо смысла мало. да и мешает в некоторых ситуациях. например если есть возможность создать объект на стеке и тут же позвать нужный метод - при таком подходе ею нельзя будет воспользоваться. надо будет кастить. если хочется полностью скрыть детали класса, то в h файле можно оставить одну свободную функцию-фабрику, которая возвращает указатель на интерфейс. а в сpp файле делать как душе угодно, но и там нет особого смысла прятать эти функции в private секции. за пределами cpp файла такую реализацию интерфейса все равно никто не увидит.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 00:16
Привет! Вот еще темы с ответами:

Объявление TStringList внутри класса - C++ Builder
Всем привет! Имеется класс FiltStream.cpp и файл заголовка FileStream.h. В файле заголовка хочу объявить переменную типа TStringList, но...

Прототип функции не виден внутри класса... - C++ Builder
Использую Rad Studio 2010 Для доступа к функции из DLL, описан прототип функции следующим образом: typedef void (_stdcall...

Создание объекта класса внутри DLL - C++ Builder
Извините, если такая тема уже была - не нашел поиском. Проблема в следующем: нужно инициализировать объект некоторого класса (класс...

Можно ли прятать методы класса в пространство имен? - C++
Здравствуйте! Понимаю, что вопрос немного странноват и туповат, но все же... Можно ли убрать некоторые (или все) методы класса в...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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