【发布时间】:2013-05-27 20:17:34
【问题描述】:
您好,我正在尝试了解友元函数的范围,但出现“未在范围内声明”错误。这是我的代码:
//node.h
class Node{
public:
int id;
int a;
int b;
friend int add(int,int);
void itsMyLife(int);
Node();
};
//node.cpp
Node::Node(){
a=0;
b=0;
id=1;
}
void Node::itsMyLife(int x){
cout<<"In object "<<id<<" add gives "<<add(x,a)<<endl;
}
//routing.cpp
#include "node.h"
int add(int x, int y){
return x+y;
}
//main.cpp
#include "node.h"
int main(){
return 0;
}
我在 node.cpp 中收到错误“添加未在此范围内声明”。当我在类范围内声明函数时,为什么会出现此错误?任何帮助将不胜感激。谢谢
【问题讨论】:
-
AFAIK 好友声明也是前向声明。如果我是对的,就不应该有错误。也许它认为它在类范围内(尽管这对于友元函数没有多大意义),尝试在友元声明中添加 :: 之前添加它以声明它在全局范围内而不是类范围内。也许会有所帮助。
-
实际上如果我在node.cpp中定义了add函数,问题就消失了。但我想在一个单独的文件中定义它。我该怎么做?
标签: c++ declaration friend-function