Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模板化函数中使用的模板化类中的嵌套类语法错误_C++_Templates_Inner Classes - Fatal编程技术网

C++ 模板化函数中使用的模板化类中的嵌套类语法错误

C++ 模板化函数中使用的模板化类中的嵌套类语法错误,c++,templates,inner-classes,C++,Templates,Inner Classes,假设我有以下几点: template<typename T> struct Foo { public: class Bar { }; }; 模板 结构Foo { 公众: 分类栏 { }; }; 如果我定义了这个函数 template <typename T> void func(Foo<T>::Bar g) { } 模板 void

假设我有以下几点:

template<typename T>
    struct Foo
    {
    public:
        class Bar
        {           
        };
    };
模板
结构Foo
{
公众:
分类栏
{           
};
};
如果我定义了这个函数

template <typename T>
void func(Foo<T>::Bar g) { }
模板
void func(Foo::Bar g){}
我得到一个错误: 语法错误:标识符“Bar”

为什么会出现错误,如何解决错误,以便使用模板函数。

使用

template <typename T>
void func( typename Foo<T>::Bar g ) { }
模板
void func(typename Foo::Bar g){}
否则,编译器不会将构造
Foo::Bar
视为类型说明符,而是将其视为表达式。

使用

template <typename T>
void func( typename Foo<T>::Bar g ) { }
模板
void func(typename Foo::Bar g){}

否则,编译器不会将构造
Foo::Bar
视为类型说明符,而是将其视为表达式。

void func(typename Foo::Bar g){}
void func(typename Foo::Bar g){}
如何添加一些文字说明问题中的代码段为什么不起作用?如何添加一些文字说明问题中的代码段为什么不起作用?