重载运算符以与 C++ 中的另一个类一起使用
Overloading operator to use with another class in C++
有没有办法重载>
(大于)运算符,以便能够执行以下操作:
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(a > b) //it should compare the int values from the constructors
//do something
我尝试重载运算符,但出现各种错误。我正在使用VC++。
不能重
载指针的运算符,因为它们是基元类型(并且不能在两个参数都是基元类型的情况下创建重载); 相反,您可以重载用户定义类型的对象(而不是指向它们的指针)的运算符:
class myClass
{
// ...
public:
bool operator>(const myClass & right) const
{
return this->whatever()>right.whatever();
}
};
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(*a > *b) //it should compare the int values from the constructors
//do something
请注意,如果您没有特定的理由在堆上分配内容,那么最好将其分配给堆栈:
myClass a(1);
myClass b(3);
if(a > b)
// do something
尝试
class MyClass
{
int value;
public:
bool operator>(MyClass const& rhs) const
{
return value > rhs.value;
}
MyClass(int v):value(v){}
};
int main()
{
MyClass a(1);
MyClass b(3);
if (a > b) { PLOP } else { POOP }
}
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 如何将两个类成员函数与同一类中的另一个函数一起添加
- 用Cmake构建在一个QTCreator版本中与另一个QTCreator版本一起使用,并与terminal的Catkin
- 如何将初始值设定项与右值引用参数一起使用 // 为什么不能使用另一个 C 样式数组变量初始化 C 样式数组
- 将两个矩阵组合在一起,然后用一个值组织另一个值
- 如何将std::enable_if与一个本身取决于另一个条件的条件一起使用
- 将函数与指针参数一起使用作为另一个函数的参数
- 异常处理 - 使用另一个文件名写入文件(如果该文件与原始文件名一起存在)
- 重载运算符以与 C++ 中的另一个类一起使用
- 我可以将一个可执行文件与另一个可执行文件(Windows 服务程序)组合在一起,并将该程序作为逻辑服务运行吗?
- 在C++中将一个向量与另一个向量一起排序
- 当我将两个头文件链接在一起时,其中一个无法识别另一个
- 有没有办法从 ELF 中提取符号,并使用 LD 将另一个文件与上一个 ELF 中定义的符号链接在一起