C ++. ошибка компиляции. я пытаюсь добавить шаблонную функцию друга с параметром шаблона enum - PullRequest
0 голосов
/ 20 сентября 2010

Пожалуйста, помогите со следующим кодом:

typedef enum {a1, a2, a3} E;

template<E e>
int foo() {
    return static_cast<int>(e);
}

class A {
    A() {};

    friend int foo<E e>();
};

Компилятор говорит: ошибка C2146: синтаксис erorr: отсутствует "," перед идентификатором "e"

Я был бы рад, если бы кто-то мог объяснить мою ошибку. Спасибо.

1 Ответ

2 голосов
/ 20 сентября 2010

Если вы хотите, чтобы класс A подружился с шаблоном функции foo(), вам необходимо использовать:

template <E> friend int foo();

Вы также можете подружиться с конкретным экземпляром шаблона функции foo():

friend int foo<a1>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...