C++ C+中的枚举指针+;

C++ C+中的枚举指针+;,c++,enums,C++,Enums,枚举: 功能定义: enum DataStatus { DataNotAvailable = -1, DataLocallyAvailable = 0, DataExternallyAvailable = 1, }; 比较: GetDataStatusByFrame(UINT PI_uiRequestFrameNo, DataStatus *PO_peDataStatus); 问题: 如何比较这些类型或至少将它们

枚举:

功能定义:

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

    GetDataStatusByFrame(UINT PI_uiRequestFrameNo, DataStatus *PO_peDataStatus);
问题:

如何比较这些类型或至少将它们转换为相同的数据类型?

使用

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

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

是否有必要进行分配?为什么不改为做下面的事情呢

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

分配给
enum
指针的情况非常少见。通常传递静态分配的变量的地址。

此API似乎旨在以稍微简单的方式调用,以避免动态分配稍后需要清理的内存。只要把变量放在堆栈上,它就会被自动清除

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

你能不能不去引用指针?也许你可以用一些回到基本的信息。考虑阅读你最喜欢的书中的指针。
IDataHandler::DataStatus status;
GetDataStatusByFrame(1, &status);
if (status == IDataHandler::DataStatus::DataNotAvailable) {
    // ...
}
IDataHandler::DataStatus status;

GetDataStatusByFrame(1, &status);

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