我试图在我的项目中覆盖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;
}
感谢您提前提供任何帮助。
答案 0 :(得分:0)
根据上面提供的有限信息,我猜你没有在getString
定义中正确提供String_Data
方法。当你试图从operator ==
调用它时,编译器会抱怨该方法不存在!
简单的解决方法是确保在class String_Data
中提供方法。此外,您似乎希望myString
和stringCount
实际上是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);