次の関数を書きました。
template< class C, typename T, typename U >
void addVarCB(C * _this, const std::string &name,
T(C::*getter)(void) const, U(C::*setter)(const T&), const std::string &def);
次に、セッターが T を入力として受け取ると機能しないことに気付いたので、関数をオーバーロードしました。
template< class C, typename T, typename U >
void addVarCB(C * _this, const std::string &name,
T(C::*getter)(void) const, U(C::*setter)(T), const std::string &def = "");
そして今、ゲッターが返されるとこれでも失敗することに気づきました
const T &
T &
const T *
T *
const T // yeah this is dumb but someone on my team wrote code like this...
同じコードをあちこちにコピーする運命にあるのでしょうか? うまくいけば、少なくとも参照バージョンだけの解決策はありますか?
この関数は、オブジェクトへの this ポインター、getter および setter パブリック メンバー関数を受け取ることに注意してください。この関数は、後で getter と setter を呼び出すことができる GUI と連動します。