C ++ string.compare()

时间:2009-07-01 19:26:30

标签: c++ pointers string

我正在为作业建立一个比较器,而我正在把头发拉出来,因为这似乎很简单,但我无法理解。

这个功能给我带来了麻烦:

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...

......后面是一堆函数定义。

任何帮助?

2 个答案:

答案 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上有任何意义。