LINUX.ORG.RU

Есть ли способы скрестить D-Pointer и Bridge Pattern?

 ,


0

1

Ну т.е. совместить наследование реализации и её приватность?

Смущает, что макросы Q_D подразумевают только класс вида ClassPrivate. Т.е. либо добавить ещё один макрос, в котором будет возможность прописывать имя класса реализации. В этом случае можно иметь реализацию под разными именами. Либо тогда ifdef'ами включать только нужную реализацию под тем же именем.

Какие ещё есть мысли на этот счёт?

★★★★★

А можно то же самое, только не птичьим языком?

Crocodoom ★★★★★
()

Ну т.е. совместить наследование реализации и её приватность?

Лол :-) Проще сделать forward declaration для реализации в публичном хедере, а конкретные реализации наследовать и подменять в cpp или ещё где-то там в каких-нибудь этих ваших details как угодно :-) Лол :-)

anonymous
()

Если в ход пошли ифдефы, значит во время выполнения нужна только одна из реализаций => не заморачивайся и сделай несколько ClassPrivate в разных файлах, и подключай нужный. В WebKit, например, такой подход широко используется, и не только для «приватных» классов (которые часто не нужны), но и для публичных методов

annulen ★★★★★
()
Ответ на: комментарий от annulen

можно для ъ чуть подорбнее про подход в вебкит в том числе для публичных методов? интерфейс метода отделяют от реализации в отдельной скрытой сущности?

anonymous
()
Ответ на: комментарий от anonymous

есть загловок SomeClass.h, в нем объявлен SomeClass. В SomeClass.cpp находятся реализации методов, которые используются всеми платформами. В файлах SomeClassA.cpp, SomeClassB.cpp, ... находятся реализации методов, специфичные для платформы A, B, ... Соотвествественно при сборке платформы A компилируются только файлы SomeClass.cpp и SomeClassA.cpp, и т.д.

annulen ★★★★★
()
Ответ на: комментарий от annulen

Так делали раньше и в Qt, но сейчас они мигрировали на QPA. Я вот пытаюсь осилить, как они переключаются между платформами...

UVV ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Сделал за все выходные, теперь нужно задачу решить )

UVV ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.