具有多个文件的命名空间

Ken*_*nta 1 c++ namespaces

在FileThree.h中

#ifndef FILETHREE
#define FILETHREE
namespace blue{}
class Filethree
{
public:
    Filethree(void);
    ~Filethree(void);
};
#endif
Run Code Online (Sandbox Code Playgroud)

在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)
{
}
Run Code Online (Sandbox Code Playgroud)

在FileFour.h中

#ifndef FILEFOUR
#define FILEFOUR
namespace red{}
class FileFour
{
public:
    FileFour(void);
    ~FileFour(void);
};
#endif
Run Code Online (Sandbox Code Playgroud)

在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)
{
}
Run Code Online (Sandbox Code Playgroud)

在main.cpp里面

#include "FileFour.h"
 #include "Filethree.h"
using namespace red ;
using namespace blue ;

int main()
{
    blueprint(12);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译上面的文件时,它给我以下错误.

 error C3861: 'blueprint': identifier not found
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么我会收到这个错误?

bil*_*llz 5

如果未在头文件中声明它们,则编译器无法找到它们.您需要在FileThree.h中声明blueprint函数namespace blue

FileThree.h:

namespace blue{
    void blueprint(int nVar);
}
Run Code Online (Sandbox Code Playgroud)

redprint函数相同,需要在FileFour.h里面声明它namespace red

FileFour.h

namespace red{
   void redprint(double nVar);
}
Run Code Online (Sandbox Code Playgroud)