Alo*_*lon 3 c++ enums templates
我想知道如何做到这一点:假设我有一个A类,里面有枚举B.
class A {
enum B {
};
};
Run Code Online (Sandbox Code Playgroud)
我想创建一个函数,它将A作为模板,然后假设A具有枚举B类型并接收其val作为参数?我尝试过类似的东西:
template<typename T>
static void Foo(T t, T::B b) {}
Run Code Online (Sandbox Code Playgroud)
但这没有用..任何人都有想法?
谢谢.
您需要告诉编译器这T::B是一个类型,因为它是一个依赖名称,并且默认情况下假定为非类型.
template<typename T>
static void Foo(T t, typename T::B b) {}
// ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
你也应该公开枚举.此代码示例有效:
class A {
public:
enum B {x, y, z};
};
template<typename T>
static void Foo(T t, typename T::B b) {}
int main()
{
Foo(A(), A::x); // OK
}
Run Code Online (Sandbox Code Playgroud)
有关深入解释,请参阅"模板"和"typename"关键字的位置和原因?:
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |