Ich möchte eine generische Methode implementieren, die eine bestimmte Operation auf ein Strukturelement anwenden und dieses Element als Parameter übergeben kann. Etwas wie folgt aus:Generische Methode zum Anwenden der Operation für das angegebene Strukturelement
typedef struct Type_t{
int a;
double b;
} Type;
void gen_method(Type &t, TypeMember m){
t.m += 1;
}
Was ich bisher getan:
typedef struct Type_t{
int a;
double b;
} Type;
typedef double Type::* PointerToTypeMemberDouble;
void gen_method(Type &t, PointerToTypeMemberDouble member){
t.*member += 1;
}
Was ich
Jetzt tun möchte Ich möchte die gleiche generische Methode implementieren, aber die Vorlagen ermöglichen Benutzer auf jedes Strukturelement zugreifen, unabhängig von seinem Typ. Dies ist, was ich getestet habe:
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){
// ...
}
Der Fehler
Wenn ich zu kompilieren versuchen, erhalte ich diese Fehlerliste: error C2061: syntax error : identifier 'type'
Und diese Warnung: warning C4346: 'myNamesPace::Type<T>::type' : dependent name is not a type
Beachten Sie, dass Ihre Stichprobe erlaubt, Mitglied Typ abzuleiten, während OP den Mitgliedstyp in 'gen_method' Anruf angeben muss. – Jarod42