我有类似的东西:
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编译.
更改:
template<Direction dir = Forward>
Run Code Online (Sandbox Code Playgroud)
至
template<Direction direction = Forward>
Run Code Online (Sandbox Code Playgroud)
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)