2012-03-19 82 views
-1

枚举:枚举指针在C++

enum DataStatus 
    { 
     DataNotAvailable = -1, 
     DataLocallyAvailable = 0, 
     DataExternallyAvailable = 1, 
    }; 

函数定义:

GetDataStatusByFrame(UINT PI_uiRequestFrameNo, DataStatus *PO_peDataStatus); 

Comparsion:

IDataHandler::DataStatus* pinnedPointer = new IDataHandler::DataStatus(); 
    GetDataStatusByFrame(1, pinnedPointer); 

    if (pinnedPointer == IDataHandler::DataStatus::DataNotAvailable) // 'cannot convert' exception 
    { 
     // ... 
    } 

问:

我怎么能比较这些类型或监听中心把它们转换成相同的数据类型?

+2

你不能只取消指针吗? – adelphus 2012-03-19 11:32:14

+2

也许你可以做一些*回到基本*信息。考虑阅读你最喜欢的书中的指针。 – 2012-03-19 12:15:55

回答

4

这个API看起来像是打算以稍微简单的方式调用,以避免动态分配内存,以后需要清理内存。只需将变量放在堆栈上,它就会自动清理;

IDataHandler::DataStatus status; 

GetDataStatusByFrame(1, &status); 

if (status == IDataHandler::DataStatus::DataNotAvailable) // 'cannot convert' exception 
{ 
    // ... 
} 
3

使用

if (*pinnedPointer == IDataHandler::DataStatus::DataNotAvailable) 
3
if (*pinnedPointer == IDataHandler::DataStatus::DataNotAvailable) 
{ 
    //... 
} 
1

是分配的必要吗?为什么不做以下改为?

IDataHandler::DataStatus status; 
GetDataStatusByFrame(1, &status); 
if (status == IDataHandler::DataStatus::DataNotAvailable) { 
    // ... 
} 

这是非常罕见分配给一个enum指针。通常你传递一个静态分配的变量的地址。