[英]C++ string.compare()
我正在为一个任务构建一个比较器,并且正在拔头发,因为这似乎很简单,但是我无法弄清楚。
此功能给我带来麻烦:
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...
...之后是一堆函数定义。
有什么帮助吗?
您正在将字符串与字符串指针进行比较,这是无效的。 你要
return aTerm->compare(*bTerm);
您不会得到*运算符的不同用法。 在“字符串* bTerm = b-> getString()”中使用*表示“ bTerm是指向字符串的指针”。 在compare(* bTerm)内使用*表示“获取bTerm指向的位置的值”,而不是仅使用compare(bTerm),后者只是尝试比较bTerm本身的值,后者是一个十六进制地址。
该调用的左侧也会发生这种情况:
aTerm->compare(*bTerm); //this statement
(*aTerm).compare(*bTerm); //is the same as this statement
->运算符只会减少所需的键入量。
PS:您可以很容易从Google或编程教科书中弄清楚这种东西。 尽管其他人可能不同意,但我不认为有关完全基本语法的问题在Stack Overflow上有任何位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.