枚举有问题

sma*_*llB 3 c++

我有类似的东西:

enum Direction{Forward,Backward};

template<Direction dir = Forward>
class X
{
private:

    Direction my_direction_;
public:

    void set_direction(Direction dir)//here I'm getting an error
    {
        my_direction_ = dir;
    }

};
Run Code Online (Sandbox Code Playgroud)

错误:'Direction dir'的声明有
什么理由?顺便说一下,它确实用VS2010编译.

Alo*_*ave 8

更改:

template<Direction dir = Forward>
Run Code Online (Sandbox Code Playgroud)

template<Direction direction = Forward>
Run Code Online (Sandbox Code Playgroud)

gcc上错误更具描述性:

prog.cpp: In member function ‘void X<dir>::set_direction(Direction)’:
prog.cpp:11: error: declaration of ‘Direction dir’
prog.cpp:3: error:  shadows template parm ‘Direction dir’
Run Code Online (Sandbox Code Playgroud)