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

(C++) Cannot refer to an enum class inside a namespace

本文关键字:枚举 命名空间 引用 C++ 不能      更新时间:2023-10-16

你好,我在项目中遇到了这个问题,我有这样的东西:

类型.h

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

在另一个文件中:

测试.h:

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

测试.cpp:

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

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

错误:"计算机::大小"不是类或命名空间

有人知道为什么吗?还是将枚举类放在命名空间中不好?谢谢!

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

Machine::size s 只是保存此属性(机器大小)的地方,所以我真的不认为它有什么特别之处。

在测试中.cpp替换以

void some_function()

void sample::some_function()

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