| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2525 人关注过本帖
标题:一个关于访问命名空间下的枚举值的问题
取消只看楼主 加入收藏
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
一个关于访问命名空间下的枚举值的问题
最近在学C++,写一些简单例子过程中呢,发现这样的一个问题。
具体描述:在ZhouFengCpp命名空间下有一个sex枚举,它有两个枚举成员,分别是MALE, FEMALE。
                 而我在调用这个枚举的时候出现了一个问题,GCC编译器说,找不到此枚举成员。但是如果我把整个命名空间引用进去,就没有问题了。
                所以请教一下在不引用整个命名空间的情况下,怎么去引用枚举成员。以下是这个简单Demo的源码。大家帮忙看一下,在此谢过了。
person.h文件
程序代码:
#ifndef PERSON_H
#define PERSON_H

namespace ZhouFengCpp
{
    extern const char * HEADER;
    typedef unsigned int uint;
    enum sex
    {
        /*
         * 男
         */
        MALE,
        /*
         * 女
         */
        FEMALE   

    };
   

    class person
    {
    public:
        /*
         * Contructors
         */
        person()
         : _name( ""), _age( 0), _sex( MALE)
        {}
        person( char * name, uint age, sex psex)
         : _name( name), _age( age), _sex( psex)
        {}
       

        char * get_name() const;
        uint   get_age()  const;
        void   set_name( char *);
        void   set_age( uint);
        void   show() const;
       

        void operator=( char *);
        void operator=( uint);
    private:
        char * _name;
        uint   _age;
        sex    _sex;   

    };
}
#endif
person.cpp文件
程序代码:
#include <iostream>
#include "person.h"

using std::cout;
using std::endl;

namespace ZhouFengCpp
{
    /*using ZhouFeng.Cpp::uint;
    using ZhouFeng.Cpp:person;
    using ZhouFeng.Cpp::sex;
     */
    const char * HEADER = "--------------------------------------------\n";
       

    inline char * person::get_name() const
    {
        return _name;   

    }
   

    inline ZhouFengCpp::uint person::get_age() const
    {
        return _age;   

    }
   

    inline void person::set_name( char * pname)
    {
        _name = pname;
    }
   

    inline void person::set_age( uint page)
    {
        _age = page;   

    }
   

    void person::show() const
    {
        cout << HEADER;
        cout << "Name: " << _name << endl;
        cout << "Age: "  << _age  << endl;
        cout << "Sex: " << (_sex == MALE ? "MALE":"FEMALE") << endl;
        cout << HEADER;
    }
   

    void person::operator= ( char * pname)
    {
        _name = pname;   

    }
   

    void person::operator= ( uint page)
    {
        _age = page;   

    }
}
测试驱动
程序代码:
#include <iostream>
#include "person.h"

using std::cout;
using std::endl;

/*using ZhouFengCpp::person;
using ZhouFengCpp::sex;
using ZhouFengCpp::HEADER;*/
using namespace ZhouFengCpp;

int main( int argc, char *argv[])
{
    person me( "ZhouFeng", 22, MALE);
    person lily( "ZhaoLiLi", 21, FEMALE);
   

    me.show();
    lily.show();
   

    cout << HEADER;
    cout << "\tChange.." << endl;
    cout << HEADER;
   

    me = "周锋";
    lily = "赵丽丽";
   

    me.show();
    lily.show();
}


[ 本帖最后由 zhoufeng1988 于 2010-8-14 23:30 编辑 ]
搜索更多相关主题的帖子: 空间 枚举 访问 
2010-08-14 23:29
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:0 
回复 3楼 lintaoyn
之前我尝试过以上的办法,还是出现编译错误。
程序代码:
#include <iostream>
#include "person.h"

using std::cout;
using std::endl;

using ZhouFengCpp::person;
using ZhouFengCpp::sex;
using ZhouFengCpp::HEADER;
//using namespace ZhouFengCpp;

int main( int argc, char *argv[])
{
    person me( "ZhouFeng", 22, MALE);
    person lily( "ZhaoLiLi", 21, FEMALE);
   

    me.show();
    lily.show();
   

    cout << HEADER;
    cout << "\tChange.." << endl;
    cout << HEADER;
   

    me = "周锋";
    lily = "赵丽丽";
   

    me.show();
    lily.show();
}
图片附件: 游客没有浏览图片的权限,请 登录注册

2010-08-15 09:43
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:0 
回复 5楼 weble
谢谢,问题解决了。
2010-08-15 10:22
快速回复:一个关于访问命名空间下的枚举值的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031448 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved