內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
有誰能告訴我爲什麼我得到這個錯誤?
但我已經在cpp文件中聲明瞭相同的內容,並在頭文件中給出了一個前向聲明。我錯過了什麼嗎? – Kenta
你錯過了我所說的。 :)在.cpp文件中的定義可以在鏈接時看到。 – billz
所以只有頭文件編譯和鏈接期間,他們鏈接到CPP文件來獲得定義。請糾正,如果我錯了。 – Kenta