(C++)不能引用命名空间内的枚举类
(C++) Cannot refer to an enum class inside a namespace
你好,我在项目中遇到了这个问题,我有这样的东西:
类型.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
的成员变量,因此错误。
相关文章:
- 如何公开库的枚举,以便我的代码不必键入整个命名空间来使用该枚举?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- C++-使用来自不同头文件、相同命名空间的枚举
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 枚举类不是类或命名空间
- 在命名空间中使用枚举
- 枚举、类、命名空间和长名称
- 解决枚举命名问题 - Qt
- C++11 枚举类命名空间块
- 类名和枚举值之间的冲突:无需命名空间即可解析
- 命名空间中的doxygen枚举
- 在不膨胀命名空间的情况下在C++中声明枚举的好方法
- 将C++命名空间枚举包装到C接口
- 在类中映射命名空间枚举
- 不是创建模板类后的类、命名空间或枚举
- 不同文件中同一命名空间中的 2 个不同枚举中的相同标识符
- 或命名空间中的枚举
- is_error_code_enum<>枚举必须仅在全局命名空间中定义?
- C++ 定义不同命名空间的枚举
- (C++)不能引用命名空间内的枚举类