读书人

在类里边声明的枚举类型为什么不能作为

发布时间: 2013-11-06 16:26:37 作者: rapoo

在类里面声明的枚举类型为什么不能作为类的函数返回类型呢?
在类里面声明的枚举类型为什么不能作为类的函数返回类型呢?


[解决办法]
第2段代码,把enum的定义丢到public下,后面就可以用cls::T 来引用了.
你这样写枚举是私有的.
[解决办法]
class cls
{
//public:
enum T
{
A = 0,
B,
C
};
public:
T Func()
{
return B;
}
};

int main()
{
cls c;
c.Func(); // 这样可以
cls::T t=c.Func(); // 这样不行,私有的不能拿出来用
return 0;
}

[解决办法]
引用:
第二段代码枚举是私有的,但是Func也是类的成员函数啊,成员函数应该可以引用私有数据啊


那得这样

class cls
{
//public:
enum T
{
A = 0,
B,
C
};
public:
T Func()
{
return B;
}

void hanshu()
{
T t=Func(); // 在类内部可以
}
};

[解决办法]
定义成public类型的enum,外面这样:cls::T

class cls
{
public:
enum T
{
A = 0,
B,
C
};
public:
T Func()
{
return B;
}
};

int main()
{
cls c;
c.Func(); // 这样可以
cls::T t=c.Func(); // 这样可以
return 0;
}

[解决办法]
引用:
C/C++ code?1234567891011121314151617181920212223class cls{//public: enum T { A = 0, B, C };public: T Func() { return B; }}; int main(){ cl……


在VS中这样是可以的,LZ是用得什么编译器

读书人网 >C++

热点推荐