我正在为作业建立一个比较器,而我正在把头发拉出来,因为这似乎很简单,但我无法理解。
这个功能给我带来了麻烦:
int compare(Word *a, Word *b)
{
string *aTerm = a->getString();
string *bTerm = b->getString();
return aTerm->compare(bTerm);
}
Word :: getString返回一个字符串*
错误:
In member function `virtual int CompWordByAlpha::compare(Word*, Word*)':
no matching function for call to...
......后面是一堆函数定义。
任何帮助?
答案 0 :(得分:5)
您正在将字符串与字符串指针进行比较,这是无效的。你想要
return aTerm->compare(*bTerm);
答案 1 :(得分:3)
您没有得到*运算符的不同用法。在“string * bTerm = b-> getString()”中使用*表示“bTerm是指向字符串的指针”。在*(* bTerm)中使用*意味着“获取bTerm指向的位置的值”而不是仅仅使用比较(bTerm),它只是尝试比较bTerm本身的值,这是一个十六进制地址。
这也发生在该电话的左侧:
aTerm->compare(*bTerm); //this statement
(*aTerm).compare(*bTerm); //is the same as this statement
- >运算符只是减少了所需的输入量。
P.S。:你可以很容易地从谷歌或你的编程教科书中找到这种东西。虽然其他人可能不同意,但我不认为有关完全基本语法的问题在Stack Overflow上有任何意义。