Ich kann keinen Zugriff auf Zeiger auf Member erhalten. Warum?
-
05-07-2019 - |
Frage
Betrachten Sie den folgenden Code ein:
template<class T, class F> struct X {};
template<class T, class F, T F::* m> struct Y {};
struct Foo {
int member;
typedef X<int, Foo> x_type; // works well
typedef Y<int, Foo, &Foo::member> y_type; // ERROR
};
typedef Y<int, Foo, &Foo::member> y_type2; // OK
Warum Compiler-Fehler erzeugen? (VS2008)
Neu
Ich habe diesen Fehler gebucht connect.microsoft.com .
Lösung 2
Dies ist ein Fehler rel="nofollow
Andere Tipps
Ich denke, dass es irgendwie mit dem Visual C ++ verwendet ist nicht wissen, die Größe der Zeiger auf ein Element an diesem Punkt. Überprüfen Sie dieses Defekts Bericht zum Beispiel ( hier ist ein weiteres Problem mit Zeiger auf Membervariable). Ich denke, dass Sie einen weiteren Visual C ++ Fehler gefunden und es sollte zu connect.microsoft.com gemeldet werden.
Ich stolperte über das gleiche Problem. Die Unterstützung für Zeiger-to-Mitglied Vorlage Argumente beschränkt sich nach wie vor in VC ++ (siehe Bugreport ) .
In meinem Fall konnte ich es umgehen, indem Sie eine Vorlage Funktion I.S.O. mit eine Template-Klasse:
template< typename Class > struct CMemberDumper {
Class& object;
template< typename M > void visit_member( M C::*pm ) {
std::cout << object.*pm;
}
};