C++ 递归命名空间成员函数定义 /****头文件*****/ 名称空间图{ 无效dfs(…); }; /******cpp文件******/ #包括“graph.h” 使用名称空间图; 无效dfs(…){ //这里有一些代码 //dfs(…);

C++ 递归命名空间成员函数定义 /****头文件*****/ 名称空间图{ 无效dfs(…); }; /******cpp文件******/ #包括“graph.h” 使用名称空间图; 无效dfs(…){ //这里有一些代码 //dfs(…);,c++,recursion,namespaces,implementation,C++,Recursion,Namespaces,Implementation,使用命名空间图时;将命名空间图中的所有符号拉入当前命名空间。但它不会以相反的方式工作,它不会将下列全局符号“推”入图命名空间 因此,函数定义是在全局命名空间中声明和定义函数dfs 您需要在函数定义前面加上名称空间: /******header file*****/ namespace graph{ void dfs(...); }; /******cpp file******/ #include "graph.h" using namespace graph; void df

使用命名空间图时;将命名空间
中的所有符号拉入当前命名空间。但它不会以相反的方式工作,它不会将下列全局符号“推”入
命名空间

因此,函数定义是在全局命名空间中声明和定义函数
dfs

您需要在函数定义前面加上名称空间:

/******header file*****/

namespace graph{
     void dfs(...);
};

/******cpp file******/

#include "graph.h"

using namespace graph;

void dfs(...){
     //some code here
     //dfs(...); <-- wrong
     //graph::dfs(...); <-- it was fine,until i call the function from main.cpp
}

当您使用名称空间图形时;
会将名称空间
图形
中的所有符号拉入当前名称空间。但它不会以相反的方式工作,它不会将下列全局符号“推”入
图形
名称空间

因此,函数定义是在全局命名空间中声明和定义函数
dfs

您需要在函数定义前面加上名称空间:

/******header file*****/

namespace graph{
     void dfs(...);
};

/******cpp file******/

#include "graph.h"

using namespace graph;

void dfs(...){
     //some code here
     //dfs(...); <-- wrong
     //graph::dfs(...); <-- it was fine,until i call the function from main.cpp
}

或者
namespace graph{void dfs(…){/*.*/}/*.*/}
非常感谢你!我想这是因为递归调用。或者
namespace graph{void dfs(…){/*.*/}/*.*/}
非常感谢你!我想这是因为递归调用。