【发布时间】:2012-10-25 09:47:27
【问题描述】:
我很困惑为什么不能使用二元运算符比较指向成员的指针
class Point3d{
protected:
//..
public:
float x;
static list<Point3d*> *freeList;
public:
float y;
static const int chunkSize = 250;
public:
float z;
};
和一个模板:
template< class class_type, class data_type1, class data_type2 >
char* access_order(data_type1 class_type:: *mem1, data_type2 class_type:: *mem2)
{
return
mem1 < mem2 ?
"member 1 accurs first":
"member 2 accurs first";
}
当我像下面这样调用 access_order 时:
access_order(&Point3d::z, &Point3d::y);
g++ 报告:
"invalid operands of types ‘float Point3d::*’ and ‘float Point3d::*’ to binary ‘operator<’"
有没有办法比较指向成员的指针,我的意思是不等比较,以及如何?
【问题讨论】:
-
出于同样的原因,您不应该使用运算符比较指针
-
@FrerichRaabe 我不认为这是重复的,因为他询问的是指向数据成员的指针,而不是指向成员函数的指针。 (此外,您引用的线程中的主要答案不正确。)
-
@JamesKanze:对不起,我看错了——我以为另一个问题是“指向成员的指针”。我同意这不是重复的。我可以在这里恢复我的关闭请求吗?
标签: c++