在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)
{
}
在 FileFour.h 文件内
#ifndef FILEFOUR
#define FILEFOUR
namespace red{}
class FileFour
{
public:
FileFour(void);
~FileFour(void);
};
#endif
在 FileFour.cpp 文件内部
#include "FileFour.h"
#include<iostream>
using namespace std;
namespace red{
void redprint(double nVar){
cout<<"red::"<<nVar<<endl;
}
}
FileFour::FileFour(void)
{
}
FileFour::~FileFour(void)
{
}
在 main.cpp 文件内
#include "FileFour.h"
#include "Filethree.h"
using namespace red ;
using namespace blue ;
int main()
{
blueprint(12);
return 0;
}
当我编译上述文件时,它给了我以下错误。
error C3861: 'blueprint': identifier not found
有人能告诉我为什么会出现这个错误吗?
main
中调用blueprint
函数之前,编译器必须先看到blueprint
的名称才能使用它。这可以来自函数的声明或定义。在任何程序中,您可以有尽可能多的函数重新声明,但只有一个定义。这就是为什么我们将代码拆分成.h
和.cpp
文件的原因。我们将声明保留在头文件(大体上),而将定义保留在cpp文件中。编译器编译cpp文件,但拉入头文件以查看函数的声明。 - Peter Wood