你好我在一个项目中遇到了这个问题,我有这样的事情:
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只是一个容纳这个属性的地方(机器的大小),所以我真的不认为这是特别的东西。
答案 0 :(得分:0)
在 test.cpp 中,替换以
开头的定义void some_function()
通过
void sample::some_function()
否则你正在定义一个与sample
类没有任何关系的独立函数(换句话说,你没有定义一个成员函数)。因此,在您的情况下s
不被视为类sample
的成员变量,因此错误。