(C ++)不能引用命名空间内的枚举类

时间:2016-01-21 00:17:21

标签: c++ enums namespaces

你好我在一个项目中遇到了这个问题,我有这样的事情:

types.h中

namespace Machine
{
    enum class size{
        TINY,
        SMALL,
        MEDIUM
    }
    //other stuff.....

并在另一个档案中:

test.h:

#include "types.h"
class sample{
    public:
        void some_function();
        Machine::size s; //this declaration is correct
}

TEST.CPP:

#include "test.h"
void some_function(){
    s = Machine::size::TINY;//line aaaa; this line is error
}

在aaaa行我不断收到错误消息:

  

错误:'Machine :: size'不是类或命名空间

任何人都知道为什么?或者将枚举类放在命名空间中是不是很好? 谢谢!

  

编辑:我修复了第一个文件中的机器拼写问题,抱歉   该

Machine :: size s只是一个容纳这个属性的地方(机器的大小),所以我真的不认为这是特别的东西。

1 个答案:

答案 0 :(得分:0)

test.cpp 中,替换以

开头的定义
void some_function()

通过

void sample::some_function()

否则你正在定义一个与sample类没有任何关系的独立函数(换句话说,你没有定义一个成员函数)。因此,在您的情况下s不被视为类sample的成员变量,因此错误。