【发布时间】:2014-11-24 03:29:48
【问题描述】:
我遇到了一个私有递归辅助函数的问题,我在指针中传递了一个引用。我收到一条错误消息,提示
“没有重载函数“insertSymbol”的实例与参数列表匹配。参数类型为:(String, Expression *)”
我想我对传递引用有误解。有人可以帮帮我吗?
struct ExpressionTree {
private:
Expression* root;
bool insertSymbol(String& symbol, Expression*& root) {
if (root == nullptr) { // base case
root = new Expression(symbol);
return true;
}
if ((*(*root).getSymbol()).c_str()[0] == '~') {
return insertSymbol(symbol, (*root).getLeftChild()); // Error occurs here
}
}
public:
ExpressionTree(void) {
root = 0x00;
}
// returns true if insert was successful, otherwise returns false
bool insertSymbol(String& symbol) {
if (symbol.size == 0) return false;
return insertSymbol(symbol, root); // Calls recursive helper function
}
};
【问题讨论】:
-
我们不知道
getLeftChild是什么或它返回什么。但看起来您正在尝试将引用绑定到临时文件,这是不允许的。
标签: c++ pointers reference overloading private