ich lerne zwar C++ aber mich würde mal interessieren wie ihr denn in C eure Daten und Funktionen dazu kapselt? Macht ihr das nur über Namenpre- oder postfixe oder wie haltet ihr die vielen Funktionen auseinander, ich glaube es gibt ja nicht mal Namensräume oder?
_________________ Nicht gleich hauen, ich bin noch C++ Frischling und habe daher ein Recht auf Welpenschutz ;-)
Richtig, es gibt keine Namensräume. Das letzte mal, als ich wirklich reines C programmiert habe, habe ich mit Präfixen arbeiten müssen; dabei habe ich allerdings eine Art OOP genutzt, bei dem die Funktionen als Zeiger in structs zur Verfügung gestellt wurden...
_________________ MCP, MCTS and more! | "It's 7:05am. I have not slept." | www.google.com
Wenn ich mit C Libs arbeite bspw. die GNOME-Libraries, sind diese öfters so aufgebaut:
C/C++ Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14
struct privObjekt // Darf nur intern von der Library benutzt werden.
{
// Attribute
};
struct Objekt // Darf nur vom Kunden angewendet werden.
{
privObjekt priv; // Darf nur von der Library intern benutzt werden.
// Attribute die der Kunde benutzen darf. int x;
int y;
double width;
double height;
};
C/C++ Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
struct privObjekt // Darf nur intern von der Library benutzt werden.
{
// Attribute
};
struct Objekt // Darf nur vom Kunden angewendet werden.
{
privObjekt priv; // Darf nur von der Library intern benutzt werden.
// Attribute die der Kunde benutzen darf. int x;
int y;
double width;
double height;
};
C/C++ Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
struct privObjekt // Darf nur intern von der Library benutzt werden.
{
// Attribute
};
struct Objekt // Darf nur vom Kunden angewendet werden.
{
privObjekt priv; // Darf nur von der Library intern benutzt werden.
// Attribute die der Kunde benutzen darf. int x;
int y;
double width;
double height;
};
Und in der Dokumentation wird nur dieser Teil erwähnt und erklärt:
C/C++ Code:
struct Objekt
{
int x;
int y;
double width;
double height;
};
C/C++ Code:
struct Objekt
{
int x;
int y;
double width;
double height;
};
C/C++ Code:
struct Objekt
{
int x;
int y;
double width;
double height;
};
Die Library zeigt nicht, dass 'Objekt' eine weitere Struktur in sich hat. Sie erwähnt nur, dass man die Struktur 'privObjekt' nicht nutzen sollte.
Überlicherweise geschieht eine Kaspelung durch Auslagerung in einzelne C-Module, wo dann über den Speicherklassen-Spezifizierer "static" gesteuert wird, was an Daten/Funktionen nach außen sichtbar ist oder nicht. Zum Einsatz für den dynamischen Zugriff kommen dann u.a. auch Callbacks.
_________________ Java, the best argument for Smalltalk since C++. -- Frank Winkler
dabei habe ich allerdings eine Art OOP genutzt, bei dem die Funktionen als Zeiger in structs zur Verfügung gestellt wurden...
Das hat mit OOP eigentlich nichts zu tun. Das ist nur Resourcen verschwendet. Es ist lediglich Syntax-Zucker, denn ob man nun...
C/C++ Code:
object.method(par);
C/C++ Code:
object.method(par);
C/C++ Code:
object.method(par);
oder...
C/C++ Code:
method(object, par);
C/C++ Code:
method(object, par);
C/C++ Code:
method(object, par);
schreibt...
Der Sinn von Funktionszeigern in structs ist auch nicht das man object.method() schreiben kann (müsste in C eh object.method (object) sein), sondern dass man eben die Methoden aufruft, die das Objekt zur Verfügung stellt.
Das ist schon ein wichtiger Aspekt von OOP.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.