模板化 class 中的嵌套 class 用于模板化函数语法错误
Nested class in templated class used in templated function syntax error
假设我有以下内容:
template<typename T>
struct Foo
{
public:
class Bar
{
};
};
如果我再定义函数
template <typename T>
void func(Foo<T>::Bar g) { }
我收到一个错误:
语法错误:标识符 'Bar'
为什么会出现错误,如何解决才能使用模板函数。
使用
template <typename T>
void func( typename Foo<T>::Bar g ) { }
否则编译器不会将构造 Foo<T>::Bar
视为类型说明符,而是将其视为表达式。
假设我有以下内容:
template<typename T>
struct Foo
{
public:
class Bar
{
};
};
如果我再定义函数
template <typename T>
void func(Foo<T>::Bar g) { }
我收到一个错误: 语法错误:标识符 'Bar'
为什么会出现错误,如何解决才能使用模板函数。
使用
template <typename T>
void func( typename Foo<T>::Bar g ) { }
否则编译器不会将构造 Foo<T>::Bar
视为类型说明符,而是将其视为表达式。