我的私有方法如何在C++中访问公共枚举?

nda*_*ess 3 c++ oop enums class function

我想知道如何或者如果我可以在以下类中enum payloadTypes使用我的私有方法访问我的公共threshold():

class A {

private: 
    unsigned int  threshold(payloadTypes kindOfPayload,int x,int y);

public:
 enum payloadTypes {
  INVALID =-1,
  TEST=0,
  THRESHOLDS,
  RX,
 };

}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我会收到此错误,并且我不想将我的枚举范围更改为 private

错误:'payloadTypes'尚未声明

unsigned int threshold(payloadTypes kindOfPayload,int x,int y);

Bat*_*eba 6

既然thresholdsGetter不是类定义的一部分,那么你需要编写A::payloadTypes而不是payloadTypes因为Argument Dependent Lookup无法拯救.

或者,您的实施中是否有拼写错误thresholdthresholdsGetter根据编译错误,您已经编写过了.但是,尽管Stroustrup说1,你仍然需要在类定义中的函数enum 之前声明你的.如果你纠正了那么你的代码将按原样运行.


1请注意

struct foo
{
    enum bar {};
    void foobar(bar b){}
};
Run Code Online (Sandbox Code Playgroud)

编译,但是

struct foo
{
    void foobar(bar b){}
    enum bar {};
};
Run Code Online (Sandbox Code Playgroud)

不会.