Первый выпуск метки enum (класс enum)

Я использую enum class установить статус, возвращаемый моими классами, но кажется, что это может вызвать странные конфликты, если метка перечисления "ОК", я думаю. Мой проект - проект CMake.

Пример:

FTDIDevice.hpp:

#ifndef __FTDIDEVICE_HPP
#define __FTDIDEVICE_HPP

#include <Exception.hpp>
#include <ftdi.h>
#include <string>
#include <vector>
#include <mutex>

typedef std::vector<uint8_t> FTDIData;

enum class FTDIDeviceStatus
{
    OK,
    CREATE_ERROR,
    INIT_ERROR,
    OPEN_ERROR,
    BAUDRATE_ERROR,
    SEND_ERROR,
    RECEIVE_ERROR,
    CLOSE_ERROR,
    NO_DATA,
    NOT_CONNECTED,
    FILE_NOT_FOUND
};

class FTDIDeviceException : public Exception
{
    private:

        static std::string statusStrings[];
        ftdi_context *context;

    public:

        FTDIDeviceException(FTDIDeviceStatus error, ftdi_context *context);
        virtual const char *what() const noexcept;
        virtual std::string who() const noexcept;
};

class FTDIDevice
{
    private:

        ftdi_context *context = nullptr;
        int16_t vendorId;                   
        int16_t productId;                  
        int32_t baudRate;                   
        bool connected;                     
        std::mutex mutex;                   

    public:

        static const std::string CLASS_NAME;

        FTDIDevice(const std::string &configFile) throw(FTDIDeviceException);
        ~FTDIDevice();
        FTDIDeviceStatus connect() throw(FTDIDeviceException);
        FTDIDeviceStatus disconnect() throw(FTDIDeviceException);
        FTDIDeviceStatus send(FTDIData &data) throw(FTDIDeviceException);
        FTDIDeviceStatus receive(FTDIData &data) throw(FTDIDeviceException);
        bool isConnected() const;
};

#endif

Этот код не компилируется:

core/io/FTDIDevice.hpp:32:5: error: expected identifier before '(' token
core/io/FTDIDevice.hpp:32:5: error: expected '}' before '(' token
core/io/FTDIDevice.hpp:32:5: error: expected unqualified-id before numeric constant
core/io/FTDIDevice.hpp:32:5: error: expected ')' before numeric constant
core/io/FTDIDevice.hpp:43:1: error: expected declaration before '}' token

Если я заменю

enum class FTDIDeviceStatus
{
    OK,
    CREATE_ERROR,
    INIT_ERROR,
    OPEN_ERROR,
    BAUDRATE_ERROR,
    SEND_ERROR,
    RECEIVE_ERROR,
    CLOSE_ERROR,
    NO_DATA,
    NOT_CONNECTED,
    FILE_NOT_FOUND
};

от

enum class FTDIDeviceStatus
{
    FOO,
    CREATE_ERROR,
    INIT_ERROR,
    OPEN_ERROR,
    BAUDRATE_ERROR,
    SEND_ERROR,
    RECEIVE_ERROR,
    CLOSE_ERROR,
    NO_DATA,
    NOT_CONNECTED,
    FILE_NOT_FOUND
};

Компилируется...

Exception.hpp и ftdi.h (libftdi) не имеют enum и #define OK.

0 ответов

Другие вопросы по тегам