class testClass
{
public:
void set(int monthValue, int dayValue);
int getMonth();
int getDay();
private:
int month;
int day;
};
我有一個簡單的類,可以在上面看到。我試圖將它的對象傳遞給一個檢查它們是否相等的函數。傳遞類成員void *
testClass obj[3];
obj[0].set(1,1);
obj[1].set(2,1);
obj[2].set(1,1);
首先,我試着像cout << (obj[0] == obj[1]);
,但也不是沒有可能運算符重載,使用模板等,所以,我可以用他們做,但我怎麼能傳遞成員變量的void*
功能?
bool cmp_testClass(void const *e1, void const *e2)
{
testClass* foo = (testClass *) e1;
testClass* foo2 = (testClass *) e2;
return foo - foo2; // if zero return false, otherwise true
}
我以爲這樣想,但我無法解決問題。我想比較像
obj[0].getDay() == obj[1].getDay();
obj[0].getMonth() == obj[1].getMonth();
通過。
究竟是什麼問題?我不明白你的問題。 –
這裏絕對不需要'void *'。你的'compare_class'可以使用'const DayOfYear&',但是你可能需要使用public getters或者使這個函數成爲'friend'。 – crashmstr
如果您不想通過'foo-foo2'進行比較,那麼請執行其他操作。我非常懷疑,無論你想要做什麼都應該以需要無效指針的方式完成。 – Hurkyl