int* i oder int *i ?
-
Der offizielle Codingstyle besagt, dass nur
int *i;
richtig ist. Alle anderen Schreibweisen sind schlichtweg falsch!
Denn dieses kann zu erheblichen Fehlern führen:
int* i, j;
Hm, i ist ein pointer, j müsste vom Aussehen her auch einer sein, ist aber KEIENR! Ist aber aus der Deklaration so nicht einfach zu erkennen und verwirrt auf den ersten Blick.
-
Deswegen deklariert man ja auch Variablen so:
int* i; // Eventuelle Erklärung int* j; // Eventuelle Erklärung int k; // Eventuelle Erklärung
MfG SideWinder
-
Mach doch:
template <typename T> struct Ptr { typedef T* Type; }; Ptr<int>::Type i, j;
-
Super
Leserlicher kann man es ja gar nicht mehr schreiben. Beim programmieren geht es nicht darum, zu demonstrieren, wie kompliziert man Sachen darstellen kann und noch durchblickt.
-
Helium schrieb:
Mach doch:
template <typename T> struct Ptr { typedef T* Type; }; Ptr<int>::Type i, j;
Wo hier der Sinn sein soll fragt man sich dann aber doch. Nichts gegen schöne lange Templates aber das hier finde ich einfach nur dumm
MfG SideWinder
-
Ich würde ja ein
template <typename T> struct As { typedef T * Pointer; typedef T * const Const_Pointer; }; As<int>::Pointer i, j;
bevorzugen
Noch ein paar Makros um die < und >:: herum und wir haben eine
sehr ausdruckskräftiges C++ erschaffen
-
FQT schrieb:
Alle anderen Schreibweisen sind schlichtweg falsch!
Mit der Äußerung hast du dir ein
verdient.
-
Die aggressive Emotionalität, mit der hier argumentiert wird, und die Verwendung verschiedener Stile in der Fachliteratur demonstriert, dass C++ hier ein Ernst zu nehmendes historisch gewachsenes Krebsgeschwür hat. Das lässt sich nicht einfach durch Diskussion in einem Forum lösen, das muss heraus geschnitten werden.
-
Ja ne is klar.
-
Super
Leserlicher kann man es ja gar nicht mehr schreiben. Beim programmieren geht es nicht darum, zu demonstrieren, wie kompliziert man Sachen darstellen kann und noch durchblickt.Wo hier der Sinn sein soll fragt man sich dann aber doch. Nichts gegen schöne lange Templates aber das hier finde ich einfach nur dumm
Jemand wollte ein Template-Typedef um sich ein Ptr<T> zu basteln. Mit meiner Variante schreibt man halt Ptr<T>::Type.
Natürlich ist Davies Variante besser, aber nicht so nah an dem geforderten.
Zeiger auf Zeiger sähen aber in jedem Fall etwas unübersichtlich aus:
Ptr<Ptr<int>::Type>::Type p; As<As<int>::Pointer>::Pointer p;
Ist sicher geschamckssache. Mit Template-Typedefs sächs was hüscher aus.
-
sollte nicht ganz so ernst gemeint sein.
aber mit deinem letzten codebeispiel sehe ich keine probleme.
einfach kreativ sein:template <class T> struct Ptr { typedef T * Type; }; template <class T> struct Ptr<Ptr<T> > { typedef typename Ptr<T>::Type * Type; }; int main() { int ** i = 0; Ptr<Ptr<int> >::Type j = i; //also entweder so Ptr<int*const>::Type k = j; //oder einfach so int const * const * const l = k; //ok das ist überspitzt :D }
-
rofl
-
Wer intellektuell wirken will, schreibt:
datentyp * pointer_auf_datentyp;
-
Was hat das denn mit intellektuell zu tun?