我遇到了私有递归辅助函数的问题,我在指针中传递了一个引用。我收到一条错误
“没有重载函数的实例”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
}
};
答案 0 :(得分:2)
您无法绑定对临时的引用。一个可能的解决方案是:
bool insertSymbol(String& symbol, Expression*& root) {
if (root == nullptr) { // base case
root = new Expression(symbol);
return true;
}
return insertSymbolHelper(symbol, root);
}
bool insertSymbolHelper(String& symbol, Expression* root) {
if ((*(*root).getSymbol()).c_str()[0] == '~') {
return insertSymbolHelper(symbol, (*root).getLeftChild()); // Error occurs here
}
// rest of code goes here
}