我正在尝试在C ++中创建一个枚举并在类中使用它。但我收到以下错误:
TestClass.cpp:65:49: error: 'TestNameSpace::TestClass::Buttons' is not a class or namespace:Buttons::Right
我正在使用Visual Studio 2015.任何帮助将不胜感激。
这是我的代码:
TestClass.h:
namespace TestNameSpace
{
class TestClass
{
public:
enum Buttons { Left, Right, Up, Down, Select, None };
TestClass();
~TestClass();
private:
Buttons getButtonType(int buttonValue);
};
}
TestClass.cpp:
#include "AirController.h"
namespace TestNameSpace
{
Buttons TestClass::getButtonType(int buttonValue)
{
if (buttonValue < 50) return Buttons::Right;
if (buttonValue < 195) return Buttons::Up;
if (buttonValue < 380) return Buttons::Down;
if (buttonValue < 555) return Buttons::Left;
if (buttonValue < 790) return Buttons::Select;
return Buttons::None;
}
}
答案 0 :(得分:3)
with(dd, ave(Volume, ID, Act, FUN= function(x) c(0, diff(x)))
资格即可 I got your code to compile。话虽这么说,你可能想要TestClass::
。
当您在文件中拆分文件时,您需要enum class
才能使其在该翻译单元中可见。
答案 1 :(得分:2)
使用经典枚举,可以访问成员,而不提及枚举类型的名称。换句话说,枚举成员生活在枚举所在的名称空间中,而不是枚举中。
这意味着,请删除枚举值前面的Buttons::
:
TestClass::Buttons TestClass::getButtonType(int buttonValue)
{
if (buttonValue < 50) return Right;
if (buttonValue < 195) return Up;
if (buttonValue < 380) return Down;
if (buttonValue < 555) return Left;
if (buttonValue < 790) return Select;
return None;
}
当您使用更多现代方式声明枚举时,枚举Buttons::
的名称需要加上前缀,即&#34;作用域枚举&#34;或者&#34;枚举类&#34;:
enum class Buttons { Left, Right, Up, Down, Select, None };
然后,您可以避免与其他与枚举成员相同的名称冲突。
答案 2 :(得分:-1)
如果这不是设计要求,则枚举定义可以放在类定义之外:
enum Buttons { Left, Right, Up, Down, Select, None };
然后你这样访问它:
Buttons::Left