在ClassB中使用ClassA的枚举

时间:2014-08-14 16:59:16

标签: c++ vector parameters enums

我不确定我做错了什么。我试图在另一堂课中使用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

3 个答案:

答案 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;
};