Für jede Klasse eine Headerdatei oder mehrere in einer?
-
Artchi schrieb:
Wie will ich bitte die Postleitzahl 01689 (von Dresden) in einem int ablegen? Das geht überhaupt nicht!
#include <iostream> void print(unsigned int p); int main() { unsigned int plz = 0x18132; print(plz); } void print(unsigned int p) { for (unsigned int i = 0; p > 0; ++i) { putchar(p % 10 + '0'); p /= 10; } }
Kann ich so nicht stehen lassen. Es handelt sich um ein int.
-
du kennst aber schon printf()/sprintf() und weißt das das mit führenden nullen bei zahlen keine probleme hat?
-
no_code schrieb:
du kennst aber schon printf()/sprintf() und weißt das das mit führenden nullen bei zahlen keine probleme hat?
-
Annahme: Deutsche Postleitzahlen. Ansonsten muss man eh mit Sonderzeichnen rechnen. :p
-
... und was nicht in Vergessenheit hätte geraten dürfen ging verloren.
nämlich, dass das Thema hier nicht die Repräsentation von Postleitzahlen ist.
-
asdas schrieb:
... und was nicht in Vergessenheit hätte geraten dürfen ging verloren.
nämlich, dass das Thema hier nicht die Repräsentation von Postleitzahlen ist.
Naja, doch schon. Kaum was anderes hätte deutlicher zeigen können, wie zweckmäßig der eigene Typ in eigener Datei ist, den man gerne auch als Dauerprovisorium einrichtet. Wobei ich es nicht für Postleitzahlen gemacht habe, sondern für weniger strittige Sachen.
-
Hallo,
mal eine Nebenfrage zu Header-Dateien: Praktiziert jemand statt
#ifndef BLA_BLA_H #define BLA_BLA_H ... #endif
vielleicht so was hier
#ifdef BLA_BLA_H #error Already included. #else #define BLA_BLA_H ... #endif
o.ä. Logik
-
Nein, das wäre viel zu umständlich ohne jeden Gewinn.
-
SeppJ schrieb:
Nein, das wäre viel zu umständlich ohne jeden Gewinn.
Man erkennt Mehrfachinklusionen und schafft sich damit weitere zu lösende Probleme.
-
volkard schrieb:
asdas schrieb:
... und was nicht in Vergessenheit hätte geraten dürfen ging verloren.
nämlich, dass das Thema hier nicht die Repräsentation von Postleitzahlen ist.
Naja, doch schon. Kaum was anderes hätte deutlicher zeigen können, wie zweckmäßig der eigene Typ in eigener Datei ist, den man gerne auch als Dauerprovisorium einrichtet. Wobei ich es nicht für Postleitzahlen gemacht habe, sondern für weniger strittige Sachen.
Aber asdas hat doch wirklich recht: Was hat die Repräsentation an sich denn mit Headerdateien zu tun? Erkläre das mal bitte.
Meiner Meinung nach haben übrigens in manchen Fällen wie PLZ Klassen einfach ihre Berechtigung, nämlich Invarianten sicherzustellen. Man wird ja auch nicht sowas blödes wie:
typedef std::vector<Edge> Polygon;
machen, ein Polygon und eine PLZ sind eben genau durch ihre Daten und ihre Invarianten gegeben.
-
Dr.++ schrieb:
Aber asdas hat doch wirklich recht: Was hat die Repräsentation an sich denn mit Headerdateien zu tun? Erkläre das mal bitte.
Das ist nunmal in C++ praktisch unvermeidbar. Was genau hast Du nicht verstanden?
-
volkard schrieb:
Dr.++ schrieb:
Aber asdas hat doch wirklich recht: Was hat die Repräsentation an sich denn mit Headerdateien zu tun? Erkläre das mal bitte.
Das ist nunmal in C++ praktisch unvermeidbar. Was genau hast Du nicht verstanden?
Habe mich auf die Repäsentation der PLZ mit Ints/Typedefs/Strings usw. bezogen, deshalb auch das vorangegangenem Zitat indem du argumentierst, das sei ein tolles Beispiel für die Headerverwaltung.