【发布时间】:2010-10-30 23:55:03
【问题描述】:
我已将>> 运算符重新定义为标题中模板类中的友元函数。在其中,我需要调用另一个名为inputHelper 的函数,我也在标题中定义了该函数。 (输入助手是递归的)
头文件如下:
template< typename NODETYPE > class Forest
{
/* (other friends) */
friend void inputHelper(istream& file, int previousDepth,
ForestNode<NODETYPE>& previousNode, ForestNode<NODETYPE> *nodeArray,
int nodeCount)
{
/* (dostuff) */
if(someconditional)
{
/* call inputHelper */
}
}
friend istream& operator>>(istream& file, Forest<NODETYPE>& f1)
{
/* (dostuff) */
/* (call inputHelper) */
}
public:
/* ... */
private:
/* ... */
}
但是,在编译时,它显示|140|error: 'inputHelper' was not declared in this scope|。您是否必须做一些特别的事情,因为它们都被定义为标题中的友元函数?我有点理解inputHelper 超出了课程的范围,但我不确定如何解决这个问题。
【问题讨论】:
-
请发布实际重现问题的代码(您发布的伪代码可能由于与您的问题无关的多种原因而无法编译)并告诉使用您究竟在哪里得到错误。 .
标签: c++ friend-function