【发布时间】:2013-12-14 22:26:28
【问题描述】:
我试图在我的项目中为 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;
}
提前感谢您的帮助。
【问题讨论】:
-
我没有看到任何尝试在 op== 覆盖中调用任何内容。包括它,以及你的编译器错误
-
您似乎想要overload 而不是override 相等运算符:类似的名称,有些相关,但完全不同。您发布的代码未显示类声明,并且发布的
getString()函数不是成员。 -
@DietmarKühl 这可能是类声明的中间部分,内联方法
-
@KateGregory:不,不是真的:你不能用两个参数作为成员函数重载
operator==()。 ...并且您不能使用类名来限定成员(尽管某些编译器有时确实允许使用限定)。 -
@DietmarKühl 哦,我知道,我只是说你不能确定 getString 不是会员。
标签: c++ visual-c++ operator-overloading overriding getter