Russian Qt Forum
Апрель 19, 2024, 15:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Специализация шаблона для базового класса  (Прочитано 22758 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #45 : Сентябрь 22, 2016, 16:22 »

Т.е. создаем наследника от А.
Специализация нужна для того, что не все А имеют одинаковые методы.
Например, для А надо вызвать A::stuff(), а для C надо и С::stuff(), и С::someAnotherStuff():
Все равно цель от меня ускользает, нет четкого представления что нужно. Хорошо, про исходные классы Вы уже неск раз говорили, допустим все как-то получилось/связалось, как бы Вы хотели использовать готовое?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #46 : Сентябрь 22, 2016, 16:50 »

Если более конкретно, то речь о настройке параметров объектов.
В зависимости от того, кто есть А, а кто С, надо вызывать различные методы.
Темплейт - это некий аналог фасада.
Грубо говоря, у него есть метод updateParams(), торчащий наружу.
А уже внутри него надо реализовать вызовы различных методов из расширяемых классов, в зависимости от их типа.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #47 : Сентябрь 23, 2016, 11:13 »

А если сначала так
Код
C++ (Qt)
template<>
class T<A>
{
 pimpl->stuff();  // вызвать A::stuff
 
// data
A * pimpl;
};
А потом так
Код
C++ (Qt)
template <class A2, class A>
class Т2 : public A2, public T<A>
{
T2( void ) { pimpl = dynamic_cast<A *> (this); }
};
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #48 : Сентябрь 23, 2016, 11:19 »

Вот именно так сейчас и сделано Улыбающийся
Просто думалось, что темплейты это позволяют без свистоплясок порешать...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #49 : Сентябрь 23, 2016, 11:23 »

Вот именно так сейчас и сделано Улыбающийся
Просто думалось, что темплейты это позволяют без свистоплясок порешать...
Не понял. Так они вроде и решают (ну почти без  Улыбающийся). Чем же это решение "нешаблонно"?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #50 : Сентябрь 23, 2016, 11:55 »

Ну, оно то шаблонно, но dynamic_cast присутствует)
А была надежда, что можно избежать и этого...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.087 секунд. Запросов: 22.