繁体   English   中英

C ++ string.compare()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM