我有一个类声明与此类似;
#include "other.h"
class A{
public:
A(){};
private:
friend Data someNamespace::function(A* elem);
}
现在在另一个头文件中我有
//other.h
#include "A.h"
namespace someNamespace {
Data function(A* elem);
}
ANd .cpp文件
//other.cpp
#include "other.h"
Data someNamespace::function(A* elem){
// do something here
}
我不知道如何使名称空间作为第一个类的朋友。名称空间中的函数不能访问类A的私有值。我错过了什么?
1条答案
按热度按时间zvokhttg1#
有个办法前向声明
class A
,这样就可以在命名空间中声明Data function(A* elem)
,这样就可以在类A
中命名someNamespace::function
。如果是多个文件
如果代码出现在单独的文件中,那么可以想象一个other.h文件如下所示: