首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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


[解决办法]
第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是用得什么编译器

热点排行