在C ++中,我有类似的东西:
namespace myNS
{
class A
{
public:
typedef enum A_ENUMS { NONE, ALL } A_ENUMS;
};
}
我想访问那个typedef,可能是这样的:
namespace myNS
{
struct ASettings
{
myNS::A::A_ENUMS myASetting;
}
}
但是我收到的错误是A没有声明类型。任何帮助表示赞赏。
更新:感谢您的建议和帮助。建议后,我更新了代码。我错过了这个事实也涉及到名称空间。它现在有效。
答案 0 :(得分:2)
您的typedef / enum声明是私有的。将其公开,您将能够从课堂外访问它。
class A {
public:
typedef enum A_ENUMS { NONE, ALL } A_ENUMS;
};
答案 1 :(得分:1)
在C ++类中,默认访问是私有的,因此无法从结构中访问您的类型。使用
class A
{
public:
typedef enum A_ENUMS { NONE, ALL } A_ENUMS;
};
但是,C ++不是C,你不需要像C中通常使用的那样使用typedef。试试:
class A
{
public:
enum A_ENUMS { NONE, ALL };
};
如果没有不必要的元素,它将起作用。
答案 2 :(得分:1)
你犯了两个错误:
更正后的代码:
class A
{
public:
typedef enum { NONE, ALL } A_ENUMS;
};
struct ASettings
{
A::A_ENUMS myASetting;
};
int
main()
{
}
如果您有正常的C ++ 11支持,那么您可以使用类范围重写枚举,如下所示:
typedef enum class A
{
NONE, ALL
} A;
干杯。
答案 3 :(得分:0)
请参阅上面的更新部分。需要包含名称空间。