дефолтное значение шаблона
class CB : public T
{
// ...
}
хочу чтобы экзепляры класса можно было обьявлять так:
CB b;
Сейчас для дефолтного значений приходится обьявлять CB<> b;
P.S.
Можешь сделать
CBB b;
или так
если не лень конструкторы переопределять.
Только вот зачем всё это?
Только вот зачем всё это?
Зачем, тут спорный вопрос.
Ситуация такая:
есть класс CX, наследник от CA,
в некоторых случаях надо класс CX с дополнительным функционалом. Этот функционал есть в классе CB, который наследник от CA. То есть можно CX унаследовать от CB в нужных местах. Для этого я и добавил шаблон. Мне это показалось более логичным, чем создавать еще один класс.
Кстати, ты пробовал смотреть на свою задачу с т.з. паттерна "стратегия" ("примесь").
А мой вопрос ты неправильно понял. Я не спрашивал зачем тебе шаблон, я спрашивал, что тебе мешает указывать явно параметр шаблона?
А мой вопрос ты неправильно понял. Я не спрашивал зачем тебе шаблон, я спрашивал, что тебе мешает указывать явно параметр шаблона?
Я понял правильно. Забыл написать :)
У меня в 90% случаях надо указывать один и тотже параметр. Потому было-бы хорошо в таких случаях ничего не писать (а точнее не править уже существующие обьявления классов).
Вот конкретика ситуации:
Есть класс который рисует прямоугольник, он наследуется от базового класса(этот класс для любых фигур).
Есть класс унаследовав который, фигура получает способность реагировать на мышку (этот класс также наследуется от базового для всех фигур).
Мне надо класс простого прямоугольника и класс прямоугольника, который реагирует на мышку.
Я решил не делать два разных класса, а сделать один шаблонный. Так как эти классы практически одинаковые.
Попробуй так:
class IMouseHandler;
class Box :IShape;
class InteractiveBox : Box, IMouseHandler;
Согласен. Неправильная иерархия была.
Собственно меня интересовало не это, а сам сабж (дефолтное значение). Я так понимаю что решение проблемы это "<>" либо "typedef"
Да.
Можно предложить ещё public-наследование (я уже приводил пример), ну и #define.
Проще всего typedef. Можно при создании шаблона сразу накидать переопределений на все самые распространённые типы.
P.S.
Matush
Всё-таки, а почему не предлагать????
Проще всего typedef.
Проще и правильнее инстанировать шаблон на месте.
Можно при создании шаблона сразу накидать переопределений на все самые распространённые типы.
Это ещё зачем? Чтоб жизнь медом не казалась? :)