因此,我一直在努力想辦法解決某些問題。我想我會在這裏發佈,看看有沒有人有任何想法。考慮以下幾點:我想要一個模板函數,它需要一個指向成員的指針,但我不希望必須通過類類型和成員類型
template <typename S, typename T, T S::* pMember>
bool SortByMember(const S& L, const S& R)
{
return L.*pMember < R.*pMember;
}
...
struct SomeStruct
{
int SomeMember;
};
void SomeFunction(void)
{
GetSortByMember<&SomeStruct::SomeMember>();
}
我想功能,GetSortByMember,一個函數指針返回SortByMember對應的實例。但是,我想不出一種方式來聲明/定義GetSortByMember,而不需要用戶也傳遞類類型和成員類型。這個:
GetSortByMember<SomeStruct, int, &SomeStruct::SomeMember>();
過於冗長,需要我說明成員類型。我確信在boost庫中可能有一個解決方案,但我寧願不將該依賴項引入到我正在開發的項目中。
我非常懷疑有一種解決方案可以產生我在psudocode中使用的確切語法,但也許可以使用模板類或宏來完成某些工作?
SortByMember的簽名是由將使用函數指針的類預期的,所以它不能被更改。
如果你使用宏,整個開發看起來很簡單,不是嗎? –
沒有像「指向成員函數的指針」這樣的「指向成員的指針」。 –
^這是不正確的,請參閱http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member。 –