Предположим, что у нас есть

template
class Base
{
    ...

    protected:

        template
        void compute(U x);

    ...
};

Сейчас я хочу вызвать этот метод из производного класса. С нешаблонными функциями-членами я обычно использую объявление using ... или обращаюсь к членам с помощью this->.... Однако неясно, как получить доступ к шаблонным членам:

template
class Derived : public Base
{
    // what's the correct syntax for
    // using ... template ... Base::compute ... ?

    ...

    void computeFloat()
    {
        float x = ...;
        compute(x);
    }

    void computeDouble()
    {
        double x = ...;
        compute(x);
    }

    ...
};

neek

Ответов: 1

Ответы (1)

Еще проще. Вы можете написать:

void computeFloat() {
    float x = .1;
    this->compute(x);
}

Тип определяется автоматически.

EDIT

Для общего случая, когда тип не может быть выведен, вы можете использовать либо:

Base::template compute();

Или:

this->template compute();

Для примеров я использовал функцию compute без параметров.

2022 WebDevInsider