none
c++工程里能有两个命名空间吗? RRS feed

答案

  • Wood1988

    在一个c++工程里是可以有两个或多个命名空间的。

    例如:以下例子就是使用两个命名空间来解决名字冲突问题。

    //文件header1.h

    using namespace std;

    #include <string>

    #include <cmath>

    namespace ns1 //声明命名空间ns1

    { class Student //在命名空间nsl内声明Student

    { public:

    Student(int n,string nam,int a)

    { num=n;name=nam;age=a;}

    void get_data();

    private:

    int num;

    string name;

    int age; };

    void Student::get_data() //定义成员函数

    { cout<<num<<" "<<name<<" "<<age<<endl; }

    double fun(double a,double b) //在命名空间n引内定义fun函数

    { return sqrt(a+b);}

    }

    //文件header2.h

    #include <string>

    #include <cmath>

    namespace ns2 //声明命名空间ns2

    { class Student

    { public:

    Student(int n,string nam,char s)

    { num=n;name=nam;sex=s;}

    void get_data();

    private:

    int num;

    string name;

    char sex; };

    void Student::get_data()

    { cout<<num<<" "<<name<<" "<<sex<<endl; }

    double fun(double a,double b)

    { return sqrt(a-b);}

    }

    //main file

    #include <iostream>

    #include "header1.h" //包含头文件l

    #include "header2.h" //包含头文件2

    int main()

    { ns1::Student stud1(101,"Wang",18);//用命名空间nsl中声明的Student类定义studt

    stud1.get_data(); //不要写成ns1::studl.get_data()

    cout<<Ns1::fun(5,3)<<endl; //调用命名空间ns1中的fun函数

    ns2::Student stud2(102,"Li",'f'); //用命名空间ns2中声明的 Student类定义stud2

    stud2.get_data();

    cout<<ns2::fun(5,3)<<endl; //调用命名空间nsl,中的fun函数

    return 0; }

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 wood1988 2011年11月30日 14:23
    2011年11月29日 7:53
    版主

全部回复

  • Wood1988

    请更改下您这个文件的权限,您现在上传的文件共享者只是您自己。我们无法下载或看到。

    谢谢您的理解!

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    2011年11月29日 6:57
    版主
  • Wood1988

    在一个c++工程里是可以有两个或多个命名空间的。

    例如:以下例子就是使用两个命名空间来解决名字冲突问题。

    //文件header1.h

    using namespace std;

    #include <string>

    #include <cmath>

    namespace ns1 //声明命名空间ns1

    { class Student //在命名空间nsl内声明Student

    { public:

    Student(int n,string nam,int a)

    { num=n;name=nam;age=a;}

    void get_data();

    private:

    int num;

    string name;

    int age; };

    void Student::get_data() //定义成员函数

    { cout<<num<<" "<<name<<" "<<age<<endl; }

    double fun(double a,double b) //在命名空间n引内定义fun函数

    { return sqrt(a+b);}

    }

    //文件header2.h

    #include <string>

    #include <cmath>

    namespace ns2 //声明命名空间ns2

    { class Student

    { public:

    Student(int n,string nam,char s)

    { num=n;name=nam;sex=s;}

    void get_data();

    private:

    int num;

    string name;

    char sex; };

    void Student::get_data()

    { cout<<num<<" "<<name<<" "<<sex<<endl; }

    double fun(double a,double b)

    { return sqrt(a-b);}

    }

    //main file

    #include <iostream>

    #include "header1.h" //包含头文件l

    #include "header2.h" //包含头文件2

    int main()

    { ns1::Student stud1(101,"Wang",18);//用命名空间nsl中声明的Student类定义studt

    stud1.get_data(); //不要写成ns1::studl.get_data()

    cout<<Ns1::fun(5,3)<<endl; //调用命名空间ns1中的fun函数

    ns2::Student stud2(102,"Li",'f'); //用命名空间ns2中声明的 Student类定义stud2

    stud2.get_data();

    cout<<ns2::fun(5,3)<<endl; //调用命名空间nsl,中的fun函数

    return 0; }

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    • 已标记为答案 wood1988 2011年11月30日 14:23
    2011年11月29日 7:53
    版主
  • Thanks a lot.
    2011年11月30日 14:23