Передача объекта в шаблонной структуре функции-члену другого шаблонного класса - PullRequest
2 голосов
/ 01 апреля 2020

У меня есть шаблон класса alpha_x, как,

template <typename T,typename U>
struct alpha_x {
    const T & alpha;
    const Scalar<U> & x;
    alpha_x(const T & a_, const Scalar<U> & x_) : alpha(a_), x(x_) {};
};

У меня есть другой класс с перегрузкой для оператора =

template <typename T>
class Scalar{
    ...
    template <typename U,typename V>
    const Scalar<T> & operator = (alpha_x<U,V> c);
    ...
}

Когда мы пытаемся определить эту функцию,

template <typename T,typename U,typename V>
const Scalar<T> & Scalar<T>::operator = (alpha_x<U,V> c){
    //do something...
}

Теперь выдается ошибка «Слишком много параметров шаблона в объявлении шаблона». Как мне с этим разобраться?

1 Ответ

2 голосов
/ 01 апреля 2020

T параметр шаблона является параметром шаблона класса Scalar. Таким образом, его необходимо указать в отдельном списке параметров шаблона.

Будет работать следующее:

template <typename T>
template <typename U, typename V>
const Scalar<T> & Scalar<T>::operator = (alpha_x<U,V> c){
    // do something...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...