这是我的代码的一部分:
...
Node<char*>* nodes[count2];//array of pointers to last level
nodes[0] = f1.rootPtr;
processInput(input, f1.rootPtr, nodes, 0, count2);
//I get an error that says this function is not declared in this scope.
return input;
}
void processInput(istream& input, Node<char*>* node, Node<char*>** nodeArray,
int level, int& count)
{
//variables
Node<char*>* aNode = new Node<char*>();
char charArray[150];
...
当我运行程序时,我得到了这个:
Forest.cpp: In function 'std::istream& operator>>(std::istream&, Forest<char*>&)':
Forest.cpp:93:53: error: 'processInput' was not declared in this scope
make[2]: *** [build/Debug/MinGW-Windows/Forest.o] Error 1
make[1]: *** [.build-conf] Error 2
以下是头文件的一部分:
template<typename NODETYPE> class Forest{
/*
* builds a forests consisting of the first and second forest reference
*/
template<NODETYPE>
friend Forest& operator+(Forest<NODETYPE>& f1, Forest<NODETYPE>& f2);
/*
* insert into the output stream a preorder traversal of the input forest
*/
template<NODETYPE>
friend ostream& operator<<(ostream& ostr, const Forest<NODETYPE>& f1);
/*
* extracts a forest from the input stream and builds it for the forest argument variable name
*/
//template<NODETYPE>
friend istream& operator>>(istream& file, Forest<char*>& f1);
/*
*Used with istream to go through input
*/
//template<NODETYPE>
void processInput(istream& input, Node<char*>* nodeBefore, Node<char*> ** nodeArray,
int levelBefore, int& count);
public:
Forest(){
..
我做错了什么?为什么我会收到这个错误。有什么建议?
谢谢!
编辑:
我试过你所说的,但它仍然没有用。我虽然使用模板,所以也许这就是我的问题所在?
部首:
模板//我应该保留这个?当我把它拿出来它也行不通 朋友istream&amp;运算符&gt;&gt;(istream&amp; file,Forest&amp; f1);
私人:
void processInput(istream&amp; input,Node * node,Node ** nodeArray,
int level,int&amp;计数);
.cpp文件:
模板 istream的&安培;运营商GT;&GT; (istream&amp; input,Forest&amp; f1){ //码 ... processInput(input,f1.rootPtr,nodes,0,count2); //错误:无法解析标识符processInput }
/ ** *处理输入 / void Forest :: processInput(istream&amp; input,Node node,Node ** nodeArray,int level,int&amp; count){ //代码
再次感谢。
答案 0 :(得分:0)
你需要在你的班级函数前面加上他们班级的名字,你现在这样做吗?如果没有,编译器认为它们是自由函数。
例如,
void processInput(istream& input, Node<char*>* node, Node<char*>** nodeArray,
int level, int& count) {
// ...code...
}
应该是
void Forest::processInput(istream& input, Node<char*>* node, Node<char*>** nodeArray,
int level, int& count) {
// ...code...
}