構造体メンバに対して決定された操作を適用し、そのメンバをパラメータとして渡すことができる汎用メソッドを実装したいと思います。指定された構造体メンバに操作を適用する一般的な方法
typedef struct Type_t{
int a;
double b;
} Type;
void gen_method(Type &t, TypeMember m){
t.m += 1;
}
私が今まで行ってきた:
typedef struct Type_t{
int a;
double b;
} Type;
typedef double Type::* PointerToTypeMemberDouble;
void gen_method(Type &t, PointerToTypeMemberDouble member){
t.*member += 1;
}
私は
を何をしたいのか今私が同じジェネリックメソッドを実装したいができるように、テンプレートを使用して、このような何かその型とは独立して、どの構造体メンバにもアクセスすることができます。これは私がテストしたものです:
typedef struct Type_t{
int a;
double b;
} Type;
template<typename T>
struct PointerToTypeMember{
typedef T Type::* type;
};
template<typename T>
void gen_method(Type &t, PointerToTypeMember<T>::type member){
// ...
}
エラー
私がコンパイルしようとすると、私はこのエラーのリストを得る: error C2061: syntax error : identifier 'type'
そして、この警告: warning C4346: 'myNamesPace::Type<T>::type' : dependent name is not a type
サンプルではメンバータイプを推測できますが、OPでは 'gen_method'コールでメンバータイプを指定する必要があることに注意してください。 – Jarod42