Search code examples
c++classdllenumsprivate

How to interface an existing class


I have this Class that have an enum "AT_Color" inside:

class K_DxfDwgColor {
enum AT_Color { Normal = 0, ByLayer = 1, ByBlock = 2 };

COLORREF m_crColor = 0;
AT_Color  m_atColor = AT_Color::Normal;

public:
    K_DxfDwgColor(COLORREF pkColorref) :m_crColor(pkColorref) {};
    K_DxfDwgColor(K_DxfDwgColor::AT_Color paColor):m_atColor(paColor){};

    OdCmColor colorClone;

    OdCmColor         SetLayerColor(bool pbDefaultForegroundColor, bool pbByLayer, bool pbIsSolidFill);
    COLORREF          GetColor(){ return m_crColor;}
    AT_Color          GetType() { return m_atColor;}
};

The enum is declared private in the class, which means it is not accessiblefrom the main. Now, we want to declare an object for this class and use the constructor which gets an AT_Color.

K_DxfDwgColor colorDefiner(K_DxfDwgColor::ByBlock);

Every time I declare my object this way, I get an error message that the enum is inaccessible. Can someone show me how to declare it correctly?

Thanks in advance


Solution

  • Move the enum outside of the class, it is necessary to be known from the calling party:

    enum AT_Color { Normal = 0, ByLayer = 1, ByBlock = 2 };
    
    class K_DxfDwgColor {
    public:
        K_DxfDwgColor(AT_Color paColor):m_atColor(paColor){};
    }