C++ 比较抽象 class 的后代
C++ Comparing descendants of abstract class
是的,我知道比较抽象的不同后代是不好的语气 class。但是我真的不得不。
我有这个简单的摘要class:
class Figure {
public:
virtual double Square() = 0;
virtual ~Figure() {};
}
我想添加的是:
bool operator<(const Figure& other) {};
它将比较其后代 - 几何图形,即 Triangle, Rectangle, Octagon
- 使用方法 Square()
中返回的面积。
这有可能吗?
从你的评论来看return (*this->Square() < other->Square());
你的问题似乎只是基本语法。
this
是一个简单的指针。所以典型的正确语法只是 this->Square()
。当然,因为它在成员函数中,所以 this
可以完全省略,就像 Square()
.
other
是一个引用,因此使用点运算符作为 other.Square()
另一个可能与您的最新评论相关的有用的事情是使 operator< 函数 const
因为它不会修改它被调用的对象。
所以生成的代码应该更像:
bool operator<(const Figure& other) const
{
return Square() < other.Square();
}
是的,我知道比较抽象的不同后代是不好的语气 class。但是我真的不得不。
我有这个简单的摘要class:
class Figure {
public:
virtual double Square() = 0;
virtual ~Figure() {};
}
我想添加的是:
bool operator<(const Figure& other) {};
它将比较其后代 - 几何图形,即 Triangle, Rectangle, Octagon
- 使用方法 Square()
中返回的面积。
这有可能吗?
从你的评论来看return (*this->Square() < other->Square());
你的问题似乎只是基本语法。
this
是一个简单的指针。所以典型的正确语法只是 this->Square()
。当然,因为它在成员函数中,所以 this
可以完全省略,就像 Square()
.
other
是一个引用,因此使用点运算符作为 other.Square()
另一个可能与您的最新评论相关的有用的事情是使 operator< 函数 const
因为它不会修改它被调用的对象。
所以生成的代码应该更像:
bool operator<(const Figure& other) const
{
return Square() < other.Square();
}