C ++。编译错误。我正在尝试使用枚举模板参数添加好友模板功能

时间:2010-09-19 21:15:43

标签: c++ templates enums friend

请帮助解决下一个代码:

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 个答案:

答案 0 :(得分:2)

如果您希望课程A与功能模板foo()成为联系人,则需要使用:

template <E> friend int foo();

您还可以与函数模板foo()的特定实例化建立联系:

friend int foo<a1>();