[英]How to implement an enum in C++
我試圖在C ++中創建一個枚舉,並在一個類中使用它。 但是我收到以下錯誤:
TestClass.cpp:65:49: error: 'TestNameSpace::TestClass::Buttons' is not a class or namespace:Buttons::Right
我正在使用Visual Studio2015。不勝感激。
這是我的代碼:
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;
}
}
對於經典枚舉,訪問成員時無需提及枚舉類型的名稱。 換句話說,枚舉成員居住在枚舉所在的名稱空間中,而不是枚舉內部。
這意味着刪除枚舉值前面的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::
的名稱需要在使用更現代的聲明枚舉的方式時加上前綴,即“作用域枚舉”或“枚舉類”:
enum class Buttons { Left, Right, Up, Down, Select, None };
然后,避免名稱與其他名稱(例如枚舉成員)相同的內容發生沖突。
如果不是設計要求,則可以將枚舉定義放在類定義之外:
enum Buttons { Left, Right, Up, Down, Select, None };
那么您可以像這樣訪問它:
Buttons::Left
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.