Über Objekt auf typedefinition zugreifen
-
Wie geht das?
Ich meine es stöhrt halt, wenn man auf typedefinition immer wie auf statische variablen zugreifen muss. Dabei kann mann auf statische Variablen auch mittels "." zugreifen... code:class foo { static int a; //anderswo definiert typedef int type; }; //Anwendung: foo f; foo::a; //geht natürlich foo::type; //das nat. auch f.a; //geht auch! f.type; //Wie muss das richtig sein?
-
Macht doch keinen Sinn.
-
Das ist nicht die Frage. Und natürlich mach das Sinn. Erstens könnte man den typ nicht kennen (geht das), zweitens ist es doch ein Unterschied, ob man
std::vector<std::vector<std::pair<std::string,unsigned> > >::iterator
oder einfach nur
martix.iterator
schreibt...
/und man keine typedefs definiert
-
class foo { static int a; //anderswo definiert class bar { }; }; foo f; f.bar; // Macht doch auch keinen Sinn...
-
Es gibt also keine Möglichkeit? Schade...
-
ness schrieb:
zweitens ist es doch ein Unterschied, ob man
std::vector<std::vector<std::pair<std::string,unsigned> > >::iterator
oder einfach nur
martix.iterator
schreibt...
/und man keine typedefs definiertAber genau für sowas macht man sich doch der Einfachheit wegen typedefs. Oder du wartest auf den nächsten Standard
, dann geht vermutlich folgendes
typeof(f)::type
-
Ebendas wollte ich ja simulieren...
-
Das geht mit Standard C++ Mitteln afaik nicht. Ich glaube auf CodeProject gibts dazu 'nen Artikel, wie man sowas simulieren kann. Der basiert aber auch nur darauf, dass sowas nur bei Typen geht, die vorher dafür 'registriert' wurden.
-
Naja, mir war nur sone Idee gekommen, aber wenn man auf typedef nicht über das Objekt zugteifen kann...
-
ness schrieb:
Naja, mir war nur sone Idee gekommen, aber wenn man auf typedef nicht über das Objekt zugteifen kann...
struct A { }; struct B : A{ typedef T int; }; A* p=new B; p->T a;
Damit sollte klar sein, warum das nicht geht...