代码之家  ›  专栏  ›  技术社区  ›  Max Frai

使用枚举

  •  3
  • Max Frai  · 技术社区  · 15 年前

    我不能理解一个问题:

    类型.hpp :

    enum SomeEnum { one, two, three };
    

    一级水电站 :

    #include "Types.hpp"
    class First
    {
       public: void someFunc(SomeEnum type) { /* ... */ }
    };
    

    二级水电站 :

    #include "Types.hpp"
    #include "First.hpp"
    class Second
    {
       public: void Foo()
       {
          First obj;
          obj.someFunc(two); // two is from SomeEnum
       }
    };
    

    E错误:

    no matching function for call to ‘First::someFunc(SomeEnum)’
    note: candidate is: void First::someFunc(First::SomeEnum)
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Kiril Kirov    15 年前

    我想你刚刚改变了:

    no matching function for call to ‘First::someFunc(SomeEnum)’
    note: candidate is: void First::someFunc(First::SomeEnum)
    

    这不是:

    no matching function for call to ‘First::someFunc(SomeEnum)’
    note: candidate is: bool First::someFunc(First::SomeEnum)
    

    无论如何,这改变了事情。枚举是否在内部声明? class First ?如果是,或者你不知道,试着调用函数,puttung First:: 在枚举前面:

    obj.someFunc( First::two ); // two is from SomeEnum
                  ^^^^^^^
    
        2
  •  1
  •   Akinos    15 年前

    我可能完全错误地解释了编译错误,但是

    note: candidate is: void First::someFunc(First::SomeEnum)
    

    让我相信你在first的定义中声明了某个枚举

    class First
    {
        SomeEnum {one, two, three};
    }
    
    推荐文章