您好,我在一个项目期间遇到了这个问题,我有这样的事情:
类型.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只是保存此属性(机器的大小)的地方,因此我并不认为这很特别。
最佳答案
在test.cpp中,替换定义以
void some_function()
通过
void sample::some_function()
否则,您将定义一个独立的函数,而该函数与类
sample
没有任何关系(换句话说,您不是在定义成员函数)。因此,在您的情况下,s
不被视为类sample
的成员变量,因此会出现错误。关于c++ - (C++)无法引用 namespace 内的枚举类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34913181/