c++ - 如何访问另一个命名空间中作为模板类成员存在的枚举?

标签 c++ enums

我正在使用 C++,以下是我的模板类:

namespace My{    
template<class config>
class BasicValue
{
public:
    enum Type
    {
        NULL_TYPE = 0,
        OBJECT_TYPE,
        ARRAY_TYPE,
        STRING_TYPE,
        BOOL_TYPE,
        INT_TYPE,
        REAL_TYPE,
    }; // Type
};// BasicValue

}// My

现在,我正在从另一个 .cpp 文件访问这个“类型”枚举。我收到所有枚举类型的以下编译错误:

error: ‘STRING_TYPE’ was not declared in this scope

如何在“我的”命名空间之外使用此枚举?

下面是代码使用,我在 switch case 中使用枚举值:

void printValue(const Value& val, int space)
{    
    int sp = space;
    switch(val.type())
    {
        case STRING_TYPE:
            break;
        case BOOL_TYPE:
            break;
        case INT_TYPE:
            break;
        case REAL_TYPE:
            break;
        default:
            exit(-1);
    }
}

最佳答案

有点像

My::BasicValue<int>::Type t;           // get an instance of the type
....
t = My::BasicValue<int>::STRING_TYPE;  // get a value

但这假设您修复了代码中的所有语法错误,如 in this example ..

关于c++ - 如何访问另一个命名空间中作为模板类成员存在的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795992/

相关文章:

c++ - vtable:底层算法

arrays - 如何在 swift 4 中声明数组索引的类型

android - Android 中带有枚举的 Parcelable 对象

java - c++ static 关键字对大括号有什么作用?

c++ - 对象构造后 shared_from_this 中的 std::bad_weak_ptr 异常

c++ - 有没有办法在枚举条目中存储多个值?

c# - 位运算符如何与枚举一起使用

Swift 2 if 具有关联值的枚举的大小写语法

C++:将对象添加到自定义向​​量类时程序崩溃

c++ - 枚举信号参数