namespace across file
精华在正文最后一句话!
推荐定义方法的一个栗子1:
// *.h
namespace MyNamespace {
class MyClass {
public:
int foo();
};
}
// *.cpp 中最好用如下方式进行定义
int MyNamespace::MyClass::foo()
{
// ...
}
不成功的栗子2:
// FileThree.h
#ifndef FILETHREE
#define FILETHREE
namespace blue{}
class Filethree
{
public:
Filethree(void);
~Filethree(void);
};
#endif
// FileThree.cpp
#include "Filethree.h"
#include<iostream>
using namespace std ;
namespace blue{
void blueprint(int nVar){
cout<<"red::"<<nVar<<endl;
}
}
Filethree::Filethree(void){}
Filethree::~Filethree(void){}
// main.cpp
#include "Filethree.h"
using namespace red ;
using namespace blue ;
int main()
{
blueprint(12);
return 0;
}
error: 'blueprint': identifier not found
没有成功的原因就是,必须在源文件中引入namespace的声明——添加namespace blue{}
(这一步头文件中已有),更重要的是要在其中在添加blueprint
函数的声明。
namespace blue{void blueprint(int nVar);}
添加到main.cpp
中之后,你才引入了函数blueprint
的声明,编译器才可以进行编译!
当然,引入的时候要带上命名空间的名字了:namespace blue{}