我感到困惑使用二進制運算符<比較一個指向成員的指針?
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我不認爲這是一個duplica te,因爲他在詢問有關數據成員的指針,而不是指向成員函數的指針。 (另外,你引用的主要答案是不正確的。) –
@JamesKanze:對不起,我誤解了 - 我還以爲另一個問題是「指向成員」。我同意這不是重複的。我可以在這裏恢復我的關閉請求嗎? –