テンプレートを使用してこのようなことは可能ですか?
template<class T, int T::M>
int getValue (T const & obj) {
return obj.M;
}
class NotPlainOldDataType {
public:
~NotPlainOldDataType () {}
int x;
}
int main (int argc, char ** argv) {
typedef NotPlainOldDataType NPOD;
NPOD obj;
int x = getValue<NPOD, NPOD::x>(obj);
return x;
}
マクロを使用してこれを行う方法をすでに知っています
#define GET_VALUE(obj, mem) obj.mem
class NotPlainOldDataType {
public:
~NotPlainOldDataType () {}
int x;
}
int main (int argc, char ** argv) {
NotPlainOldDataType obj;
int x = GET_VALUE(obj, x);
return x;
}