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

文件三.h:

namespace blue{
    void blueprint(int nVar);
}

功能相同redprint,需要在FileFour.h里面声明namespace red

文件四.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 回答
0

当您将代码分成多个文件时,您必须在头文件和源文件中使用命名空间。

add.h

#ifndef ADD_H
#define ADD_H

namespace basicMath
{
    // function add() is part of namespace basicMath
    int add(int x, int y);
}

#endif
add.cpp


#include "add.h"

namespace basicMath
{
    // define the function add()
    int add(int x, int y)
    {
        return x + y;
    }
}
main.cpp


#include "add.h" // for basicMath::add()

#include <iostream>

int main()
{
    std::cout << basicMath::add(4, 3) << '\n';

    return 0;
}

来源:https ://www.learncpp.com/cpp-tutorial/user-defined-namespaces/comment-page-4/#comment-464049

于 2020-05-25T16:20:48.420 回答