这是一个代码示例:
foo.h中
class Foo
{
.............
class Bar;
Bar* pimpl;
};
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() {}
在GetPosition
方法上,我得到error: 'PositionsEnum ' does not name a type
。
我该如何解决这个问题?
答案 0 :(得分:6)
使用类
添加前缀PositionsEnumFoo::Bar::PositionsEnum Foo::Bar::GetPosition() {}
答案 1 :(得分:1)
替换
class Bar
与
class Foo::Bar
附录:现在您已修复了第一个错误,并以合理,非冗长的方式修复了下一个错误。即,替换
PositionsEnum Foo::Bar::GetPosition() {}
没有编译,
auto Foo::Bar::GetPosition() -> PositionsEnum {}
编译。
区别在于查找范围PositionsEnum
。