C ++ Наследование шаблонов.Подкласс должен заменить тип в базовом классе фиксированным типом - PullRequest
1 голос
/ 27 июня 2019

как я могу использовать базовый класс шаблона таким образом, чтобы подкласс делал шаблон типа "fix".

Например, у меня есть шаблон базового класса:

template <class A, int size> class BaseClass{
    private:
        A *elem;
    public:
        A()
        {
            elem = new A[size];
        }
};

Я могу сделать

BaseClass<int, 5> mybase;

Теперь я хочу создать подкласс, который имеет только параметр size, а тип должен быть int, то есть подкласс должен заменить тип A в базовом классе на фиксированный тип (например, int)

Примерно так:

SubClass<5> mysubclass; 
// type should be fixed to int, e.g. mysubclass can do the same like mybase 

Привет

Ответы [ 2 ]

5 голосов
/ 27 июня 2019

Как насчет

template <int size>
using SubClass = BaseClass<int,size>;

Это не подкласс, но, насколько я понимаю, делает то, что вам нужно. Истинный подкласс будет

template <int size>
class SubClass: public BaseClass<int,size> {
   ...
};
3 голосов
/ 27 июня 2019

Вы можете определить производный класс как

template <int size> 
class SubClass : public BaseClass<int, size> {
    ...
};

Тогда для SubClass<5> специализация базового класса будет BaseClass<int, 5>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...