我不确定我做错了什么。我试图在另一堂课中使用classA&#39的公共枚举。任何帮助,将不胜感激。感谢
// proA.h
#pragma once
//#include "editEntity.h" // ***This was my problem***
class proA
{
public:
enum myEnum
{
jnkA,
jnkB,
jnkC
};
};
// proB.h
#pragma once
#include "proA.h"
#include <vector>
//class bld_DeviceFilter;
class proB
{
private:
std::vector<proA::myEnum> list_of_myEnums;
};
如果我有&#39;类proA&#39;取消注释我收到以下错误:
Error 7 error C2027: use of undefined type 'proA'
如果我有&#39; #include proA.h&#39;我收到以下错误:
Error 11 error C2027: use of undefined type 'proA'
我在另一个堆栈溢出页面中读到了您需要放置的内容&#39;在proA :: myEnum之前,为了使用枚举作为类型。当我按照建议做的时候:
std::vector<enum proA::myEnum> list_of_myEnums;
然后我收到以下错误:
Error 16 error C2011: proA : 'enum' type redefinition
答案 0 :(得分:1)
这对我有用:
class ClassA
{
public:
enum m_enum
{
ENUM_1,
ENUM_2,
ENUM_3
};
};
ClassB的:
#include "ClassA.h"
#include <vector>
#include <iostream>
class ClassB
{
std::vector<ClassA::m_enum> m_vec;
public:
ClassB()
{
ClassA::m_enum enum1;
ClassA::m_enum enum2;
ClassA::m_enum enum3;
m_vec.push_back(enum1);
m_vec.push_back(enum2);
m_vec.push_back(enum3);
std::cout << m_vec.size() << std::endl;
}
};
主:
#include "ClassB.h"
int main()
{
ClassB classB;
return 0;
}
答案 1 :(得分:1)
尝试检查一些事情:
1-您的代码中是#include <vector>
吗?
2-这两个类是否在同一个项目上,并且都标记为要编译?
枚举不需要是静态的,我在这里做了一个快速测试,它在你发布时起作用,除了缺少的#include <vector>
。
答案 2 :(得分:0)
您需要将枚举定义为新类型。解决方案:
class proA
{
public:
typedef enum
{
jnkA,
jnkB,
jnkC
} myEnum;
};