3

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

このエラーが発生する理由を誰か教えてもらえますか?

4

3 に答える 3

7

関数がヘッダー ファイルで宣言されていない場合、コンパイラは関数を見つけることができません。FileThree.h でblueprint関数を宣言する必要がありますnamespace blue

FileThree.h:

namespace blue{
    void blueprint(int nVar);
}

関数と同じ、redprint内部の FileFour.h で宣言する必要がありますnamespace red

FileFour.h

namespace red{
   void redprint(double nVar);
}
于 2013-01-09T06:23:27.847 に答える
0

FileFour.h の内部

#ifndef FILEFOUR
#define FILEFOUR
namespace red{
     void redprint(int nVar);        
}
class FileFour
{
public:
    FileFour(void);
    ~FileFour(void);
};
#endif

FileFour.cpp の内部

#include "FileFour.h"
#include<iostream>
using namespace std; 
void red::redprint(int nVar)
{
    cout<<"red"<<nVar<<endl;
}
FileFour::FileFour(void)
{
}

FileFour::~FileFour(void)
{
}

Filethree.h の内部

#ifndef FILETHREE
#define FILETHREE
namespace blue{
     void blueprint(int nVar);       
}
class Filethree
{
public:
    Filethree(void);
    ~Filethree(void);
};
#endif

Filethree.cpp の内部

#include "Filethree.h"
#include<iostream>
using namespace std ;
void blue::blueprint(int nVar)
{
    cout<<"blue"<<nVar<<endl;
}
Filethree::Filethree(void)
{
}

Filethree::~Filethree(void)
{
}

main.cpp の内部

#include <iostream>
using namespace std;
#include "FileFour.h"
 #include "Filethree.h"
using namespace blue ;
int main()
{
    blueprint(12);
return 0;
}

定義は、cpp ファイル内で行う必要がありますが、ヘッダー ファイルで宣言する必要があります。

于 2013-01-09T07:17:15.520 に答える