[英]Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)
[英]Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast) enum
我已經將變量數據從在結構外部聲明的枚舉類型復制到在結構內部寫入的枚舉類型變量,但由於引發向枚舉類型的轉換需要顯式強制轉換(static_cast,C樣式強制轉換或函數-樣式轉換)
enum TGenObjType //sundar
{
TYPE_UNDEFINED
, TYPE_CAR
, TYPE_TRUCK
, TYPE_MOTORBIKE
, TYPE_BIKE
, TYPE_PEDESTRIAN
};
struct SGenObjData
{
enum TGenObjType recogType ; /* #RTAS: input */ /* Object type (vehicle, pedestrian, ...) */
enum TGenObjType commuType ; /* #RTAS: input */ /* Object type (vehicle, pedestrian, ...) */
};
ushort j(0);
for (ulong i = 0; i < gol.mData.size(); ++i)
{
if (gol.mData[i].isValid > 0)
{
if (gol.mData[i].id <= OBJ_MAX_ID)
{
objectList.objectIdx[size_t(gol.mData[i].id)][size_t(SRC_LIST1)] = ushort(j);
switch (gol.mData[i].recognized_shape)
{
case EO_SHAPE_CAR : objectList.objects[j].recogType = TYPE_CAR ; break;
case EO_SHAPE_TRUCK : objectList.objects[j].recogType = TYPE_TRUCK ; break;
case EO_SHAPE_MOTORBIKE : objectList.objects[j].recogType = TYPE_MOTORBIKE ; break;
case EO_SHAPE_BIKE : objectList.objects[j].recogType = TYPE_BIKE ; break;
case EO_SHAPE_PEDESTRIAN: objectList.objects[j].recogType = TYPE_PEDESTRIAN; break;
case EO_SHAPE_UNDEFINED :
default : myDataLst.objectList.objects[j].recogType = TYPE_UNDEFINED ;
}// throwing an error Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)
誰能告訴我哪里出了問題?
命名enum
是一種獨特的類型。 它具有基礎類型,“弱” enum
允許隱式轉換為基礎類型。 它不支持從基礎類型到enum
隱式轉換。 與另一個enum
聲明相同名稱但在另一個scopr中聲明的enum
是其自身的獨特類型(這適用於所有類型)。 由於enum
不支持從基礎類型隱式轉換,因此即使enum
及其所有成員具有相同的名稱和值,也不能簡單地將一個enum
的值分配給另一個enum
。
enum Foo
{
Bar = 0
};
與...不同
struct Object
{
enum Foo
{
Bar = 0
};
};
Foo
和Object::Foo
都是不同的類型,C ++不允許在它們之間進行隱式轉換。
Object:Foo innerFoo = Bar; // Error Bar and Object::Bar are not the same
Object:Foo innerFoo = Onject::Bar; // OK! They are the same!
聽起來這兩個enum
是多余的,所以您需要確定要使用的TGenObjType
版本,並刪除另一個版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.