在重写== operator c ++时,无法在同一个类中调用方法

时间:2013-12-14 22:26:28

标签: c++ visual-c++ operator-overloading override getter

我试图在我的项目中覆盖String_Data类的==运算符。 String_Data有一个方法getString(),它返回String_Data对象中保存的字符串。我试图在我的==覆盖中调用此方法来比较两个String_Data对象持有的字符串。当我这样做但是我被告知我作为参数使用的String_Data对象没有这样的方法。我不确定会出现什么问题但是我会非常感谢任何帮助。这是我的代码。

#include "stdafx.h"
#include <vector>
#include <sstream> 
#include "String_Data.h"

using namespace std;

std::string myString;
int stringCount;

String_Data::String_Data(std::string URL, int useCount)
{
    stringCount = useCount;
    myString = URL;
}

String_Data::~String_Data(void)
{
}

bool operator == (String_Data sd, String_Data sd2) {
return (sd.getString() == sd2.getString());
}

std::string getString() {
    return myString;
}
void increment() {
    stringCount++;
}

bool compare() {

}

int getCount() {
    return stringCount;
}

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

根据上面提供的有限信息,我猜你没有在getString定义中正确提供String_Data方法。当你试图从operator ==调用它时,编译器会抱怨该方法不存在!

简单的解决方法是确保在class String_Data中提供方法。此外,您似乎希望myStringstringCount实际上是String_Data的成员,而不是独立的全局变量。您的类定义应该更符合以下方面:

// String_Data.h
class String_Data
{
  std::string myString;
  int stringCount;
public:
  //...
  std::string getString();
};

您的getString免费功能需要转换为String_Data方法:

std::string String_Data::getString()
{
  return myString;
}

这应该可以纠正您从重载的operator ==中获得的错误。请注意operator ==应该通过const ref获取其参数,因为没有任何内容被修改:

bool operator == (const String_Data &sd, const String_Data &sd2);