注册 登录
编程论坛 C++教室

如何在一个命名空间中使用另一个命名空间中的类

pangxufang 发布于 2008-05-14 14:28, 1285 次点击
如何在一个命名空间中使用另一个命名空间中的类,有没有朋友能解释一下?
除了用using namespace SpaceAA::ClassBB;外还需要将AA中类定义所在文件包含进来吗?

[[it] 本帖最后由 pangxufang 于 2008-5-14 14:35 编辑 [/it]]
9 回复
#2
pangxufang2008-05-14 14:33
着急!
#3
sunkaidong2008-05-14 14:36
#include<iostream>
using namespace std;
namespace demo
{
    class a
    {
    public:
        void d()
        {
            cout<<"demo::a d()"<<endl;
        }
    };
};
namespace sdk
{   
    using namespace demo;
    class b
    {
       a a1;
       public:
           b():a1(){}
           void d()
           {
               a1.d();
           }
           
    };
};
int main()
{
    sdk::b b1;
    b1.d();
    return 0;
}
#4
sunkaidong2008-05-14 14:40
只要你告诉这个空间你要引入另一个空间的内容,查找数据的时候它就会到空间里面找的..就好像标准库一样的用法..
或者你向java和c#学用到什么套用什么...

[[it] 本帖最后由 sunkaidong 于 2008-5-14 14:43 编辑 [/it]]
#5
pangxufang2008-05-14 14:50
回复 3# 的帖子
很快!谢谢o(∩_∩)o...
我是这么用的,但是编译说找不到那个命名空间不存在?是不是还有别的注意事项呀?
#6
sunkaidong2008-05-14 14:53
如果空间是你在文件中的.要把包括空间文件的头文件加进去
#7
pangxufang2008-05-14 15:01
你是说我需要建一个头文件在里面声明空间中的类,然后把头文件也包含进去?如果我的空间文件没有头文件的话,我是不是要把空间中包含的所有头文件都包含进去吗?
#8
sunkaidong2008-05-14 15:05
比如你建了个demo.h文件,这个文件里面定义了namespace demo;那么当你使用的时候,在使用文件开头加上#include"demo.h"文件
#9
pangxufang2008-05-14 15:13
我现在的情况是:在一个AA命名空间中建了好几个类,每个类都在不同的头文件,要在命名空间BB中使用AA空间中的一个类。
我刚用了,using namespace AA; 并且包含了AA空间中我要用的一个C类的头文件,当我定义这个C类对象时,出现了重复定义的现象,但是我每个头文件中都有相关的宏防止重复链接的措施。我说清楚了吗?呵呵。
#10
pangxufang2008-05-14 15:20
很奇怪,我的文件是连接出现错误说:C类的**方法已经在xx.obj中定义过了。唉。。。。。。。。。
1