数组索引运算符重载.现在无法使用比较运算符
Array Index operator overloaded.Unable to use the comparison operator now
I 重载数组下标 ( [] ) 运算符。我已经让它返回一个整数,因为我不会将其用于任何赋值目的。但是,我现在无法使用比较运算符!
这是代码
class Set
{
public:
virtual int operator[](int i) = 0;
virtual int size() = 0;
void union_operation(Set* second);
void interesction_operation(Set* second);
};
void Set::union_operation(Set* second)
{
int second_size = second->size();
for(int i=0;i<second_size;i++)
{
for(int j=0;j<this->size();j++)
{
//The line below doesnt work!
if(this[j]==second[i])
{
break;
}
}
}
}
运算符重载的实现在派生类中执行。
由于重载运算符将返回一个整数,因此比较是在两个整数之间进行的,这是完全有效的。为什么这条线仍然给出错误?
在C++中,this
是一个指针,需要取消引用才能使用它。当然,除非您将其传递给函数。
因此,为了使您的比较起作用,它应如下所示:
if((*this)[j] == (*second)[i])
{
break;
}
编辑:second
也是一个Set
指针,因此您必须取消引用它才能使用它。
相关文章:
- 为什么比较运算符如此快速
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 布尔比较运算符是如何在C++中工作的
- 关于 std::min, std::max 中的比较运算符的混淆
- 三向比较运算符成员与非成员实现
- 标准::可选枚举的比较运算符
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- C++分数混合比较运算符错误
- <<运算符优先级与字符串比较
- 不能将重载比较运算符与 Catch 测试一起使用
- 重构使用动态强制转换的 std::set 的比较运算符
- ">"运算符和"<"运算符如何进行字符串比较?
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- C++使用关系运算符比较字符串
- 为什么使用 and 运算符比较 if 语句中的 2 个对象会抛出错误,而使用 2 if 语句则不会
- 使用关系运算符比较指针意味着什么
- 运算符<比较多个字段
- 运算符==比较两个不同的类
- 使用==运算符比较字符串到0
- 使用'if'语句和"<<"时的结果错误,'>>'运算符比较 3 个整数