C ++中的命名空间问题

时间:2012-01-25 06:31:25

标签: c++ namespaces

我有两个文件Sample.cpp和Main_file.cpp。 Sample.cpp只有一个名称空间n1,其中包含int变量x的定义。我想在main_file.cpp中打印这个变量x。我该怎么做呢?

//Sample.cpp_BEGINS

namespace n1
{
    int x=10;
}
//Sample.cpp_ENDS

//Main_FILE_BEGINS

void main()
{
    print x;
}
//MAIN_FILE_ENDS

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:6)

您使用变量的完全限定名称:

int main()
{   
     n1::x = 10;

     return 0;
}

答案 1 :(得分:5)

要从main.cpp访问n1::x,您可能需要创建并添加sample.h

// sample.h
#ifndef SAMPLE_H
#define SAMPLE_H

namespace n1
{
    extern int x;
}
#endif

// sample.cpp
#include "sample.h"

namespace n1
{
    int x = 42;
}

#include <iostream>
#include "sample.h"

int main()
{   
     std::cout << "n1::x is " << n1::x;
}

如果您不想创建头文件,也可以在main.cpp中执行此操作:

#include <iostream>

namespace n1
{
    extern int x;
}    

int main()
{   
     std::cout << "n1::x is " << n1::x;
}