在Pimpl习语中使用枚举时"不命名类型"错误

Adr*_*ian -1 c++

这是一个代码示例:

foo.h中

class Foo 
{
    .............
    class Bar;
    Bar* pimpl;
};
Run Code Online (Sandbox Code Playgroud)

Foo.cpp中

class Foo::Bar
{
    enum class PositionsEnum : int
    {
        Extended, Retracted
    };
    void MoveToPosition(PositionsEnum pos);
    PositionsEnum GetPosition();
};

void Foo::Bar::MoveToPosition(PositionsEnum  pos) {}

PositionsEnum Foo::Bar::GetPosition() {}
Run Code Online (Sandbox Code Playgroud)

GetPosition方法上,我得到了一个 error: 'PositionsEnum ' does not name a type.

我怎样才能解决这个问题 ?

Jen*_*ens 6

与类一起使用前缀PositionsEnum

Foo::Bar::PositionsEnum Foo::Bar::GetPosition() {}
Run Code Online (Sandbox Code Playgroud)

  • `auto Foo :: Bar :: GetPosition() - > PositionsEnum {}` (2认同)