<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ähnliche Frage: Include von Konstanten.]]></title><description><![CDATA[<p>Hallo</p>
<p>leider noch eine ähnliche Frage.<br />
Situation: zwei Dateipaare i1.cpp, i1.h bzw. i2.cpp, i2.h</p>
<p>i1.h benötigt eine int Konstante aus i2.h und i2.h benötigt eine<br />
int Konstante aus i2.h<br />
Prototypen geht hier (im Ggs. zu Klassen) ja nicht, da dadurch die Konstante erneut deklariert würde.</p>
<p>#include &quot;i1.h&quot; in i2.h und #include &quot;i2.h&quot; in i1.h zu schreiben, geht<br />
auch nicht, da dadurch eine Endlosschleife von #include-Vorgängen<br />
entsteht. Geht selbst dann nicht, wenn man den üblichen Trick<br />
#if !defined I1<br />
#include &quot;i1.h&quot;<br />
#define I1<br />
#endif<br />
anwendet.</p>
<p>Oder allgemeiner: gibt es ein allgemeines Rezept, das nicht nur mit<br />
2, sondern auch 3,4 oder 10 Dateien funktioniert, die sich wechselseitig<br />
includen müßten ??</p>
<p>Oder muß man dann für jedes Tupel von Dateien einen &quot;Ober-Header&quot;<br />
i12.h schreiben, der dann i1.h und i2.h includet und entsprechend<br />
i12.cpp, der nur i12.h includet, nicht aber i1.h und i2.h separat ?<br />
Elegant ist das ja nicht gerade. Wieso ist das in C++ so kompliziert, in<br />
keiner anderen Sprache, die ich kenne, aber auch nur das geringste Problem ?</p>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152510/ähnliche-frage-include-von-konstanten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:34:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152510.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Jul 2006 20:24:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Thu, 06 Jul 2006 20:24:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>leider noch eine ähnliche Frage.<br />
Situation: zwei Dateipaare i1.cpp, i1.h bzw. i2.cpp, i2.h</p>
<p>i1.h benötigt eine int Konstante aus i2.h und i2.h benötigt eine<br />
int Konstante aus i2.h<br />
Prototypen geht hier (im Ggs. zu Klassen) ja nicht, da dadurch die Konstante erneut deklariert würde.</p>
<p>#include &quot;i1.h&quot; in i2.h und #include &quot;i2.h&quot; in i1.h zu schreiben, geht<br />
auch nicht, da dadurch eine Endlosschleife von #include-Vorgängen<br />
entsteht. Geht selbst dann nicht, wenn man den üblichen Trick<br />
#if !defined I1<br />
#include &quot;i1.h&quot;<br />
#define I1<br />
#endif<br />
anwendet.</p>
<p>Oder allgemeiner: gibt es ein allgemeines Rezept, das nicht nur mit<br />
2, sondern auch 3,4 oder 10 Dateien funktioniert, die sich wechselseitig<br />
includen müßten ??</p>
<p>Oder muß man dann für jedes Tupel von Dateien einen &quot;Ober-Header&quot;<br />
i12.h schreiben, der dann i1.h und i2.h includet und entsprechend<br />
i12.cpp, der nur i12.h includet, nicht aber i1.h und i2.h separat ?<br />
Elegant ist das ja nicht gerade. Wieso ist das in C++ so kompliziert, in<br />
keiner anderen Sprache, die ich kenne, aber auch nur das geringste Problem ?</p>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1092814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1092814</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Thu, 06 Jul 2006 20:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Thu, 06 Jul 2006 20:27:22 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>Prototypen geht hier (im Ggs. zu Klassen) ja nicht, da dadurch die Konstante erneut deklariert würde.</p>
</blockquote>
<p>Sicher geht das, nur ist das, was du für eine Konstantendeklaration hälst, eine Definition. Eine Deklaration sieht so aus:</p>
<pre><code class="language-cpp">extern const int foo;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1092816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1092816</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 06 Jul 2006 20:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 09:06:17 GMT]]></title><description><![CDATA[<p>Gut, das geht. Heißt das nun aber, daß ich,<br />
wenn ich i1.h in i2.h brauche und i2.h in i1.h brauche,<br />
*jede* einzelne Konstante, Funktion und Klasse nochmal extra<br />
als Prototypen einbinden muß ? Abgesehen davon, daß das doch<br />
recht mühsam sein kann, wenn man 1000 Klassen hat, von denen stets<br />
mehrere voneinander abhängen können.</p>
<p>Gibt es nicht in C++ eine Möglichkeit, so zu #includen, daß jeder gefragte Header einmal und nur einmal eingebunden wird, sodaß Endlosschleifen beim #includen einfach verhindert werden ? Führt der Compiler nicht Buch, welche Dateien er schon<br />
includet hat, sodaß er #include-Schleifen bemerkt, bevor er ein- und<br />
dassselbe File 256-mal eingebunden hat und/oder die Verschachtelungsgrenze<br />
erreicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093031</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Fri, 07 Jul 2006 09:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 09:17:10 GMT]]></title><description><![CDATA[<p>Nein, der Compiler bemerkt das überhaupt nicht - der bekommt nur ein einzelnes File vorgesetzt (nachdem der Präprozessor alle #include's auseinandergenommen hat). Aber du kannst den Präprozessor dazu bringen, jeden Header nur einmal einzubinden - Stichwort &quot;Include Guard&quot;.</p>
<p>(für deine Anwendung würde es sich anbieten, alle gemeinsamen Deklarationen in einen unabhängigen Header zu packen - dann brauchst du in jeder Datei nur ein '#include &quot;defs.h&quot;' am Anfang)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093046</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 07 Jul 2006 09:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 13:36:42 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Danke für die Antworten allseits. Mir ist noch eine Lösung eingefallen, die<br />
zwar nicht so elegant ist, aber nach meinen Versuchen funktioniert:</p>
<p>Jede Datei incdatei.h, die irgendwann includet werden soll, umrahmen mit:</p>
<p>#if !defined INCDATEIH<br />
#define INCDATEIH</p>
<p>... hier der ganze Rest der Datei incdatei.h .....</p>
<p>#endif</p>
<p>d.h. das #endif an's Dateiende schreiben. #include &quot;incdatei.h&quot; geht selbst<br />
dann noch, wenn in incdatei.h wiederum #include &quot;incdatei.h&quot; steht, ohne<br />
Endlosverschachtelung von #includes zu hervorrufen (da<br />
ja INCDATEIH dann bereits definiert ist).</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093283</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Fri, 07 Jul 2006 13:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 14:23:12 GMT]]></title><description><![CDATA[<p>Genau das ist der &quot;Include Guard&quot; den CStoll erwähnt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093303</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 07 Jul 2006 14:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 15:37:39 GMT]]></title><description><![CDATA[<p>Und genau das wird nicht benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093348</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 07 Jul 2006 15:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 15:42:40 GMT]]></title><description><![CDATA[<p>Ach. Meinst du hiefür nicht oder allgemein nicht?<br />
Ich finds eigentlich recht hilfreich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093355</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093355</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 07 Jul 2006 15:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 15:44:59 GMT]]></title><description><![CDATA[<p>Generell klingt das ein bißchen nach nem Design-Problem. Solche Zyklischen Abhängigkeiten sollte man schnellstmöglich loswerden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093357</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Jul 2006 15:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 15:46:40 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Ach. Meinst du hiefür nicht oder allgemein nicht?<br />
Ich finds eigentlich recht hilfreich.</p>
</blockquote>
<p>Naja, welche Datei wolltest Du denn gerne zuerst anschaun, wenn Du für Datei1 Datei2 brauchst und für Datei2 die Datei1. Das ist ein generelles Problem, das sich auch mit Include-Guards nicht besteitigen läßt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093359</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Jul 2006 15:46:40 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 15:53:55 GMT]]></title><description><![CDATA[<p>Ein &quot;GlobalDefs.h&quot; machen und alle Konstanten da rein packen?</p>
<p>edit: Sagte CStoll schon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093364</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Fri, 07 Jul 2006 15:53:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 16:04:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/324">@Jester</a><br />
Ich hab das mit den Include-Guards jetzt nicht auf zyklische Abhängigkeiten bezogen. Probleme die daraus enstehen sollte man anders lösen. Ich find sie allgemein recht hilfreich.<br />
Zyklische Abhängigkeiten sind ja meistens ein Design-Problem. Wenn es sich nicht mit Forwarddeklarationen lösen lässt, hat man irgendwas falsch gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093374</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 07 Jul 2006 16:04:46 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 16:10:52 GMT]]></title><description><![CDATA[<p>Klar sollte man Include Guards benutzen, nur passen sie nicht auf die Problemstellung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093379</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 07 Jul 2006 16:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 16:15:39 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also zyklische Abhängigkeiten sind meines Erachtens kein prinzipieller Design-Fehler, im Gegenteil.<br />
Zyklische Includes entstehen z.B. dadurch, daß Klasse A Bezeichner von Klasse<br />
B benötigt. z.B. in der Form<br />
void A::init(B aB, c aC) {<br />
... B.getItem(...)<br />
}</p>
<p>und Objekte vom Typ B ihrerseits Objekte vom Typ A übergeben werden und Methoden von A aufrufen.<br />
Baut man dann jede Klasse in eine eigene Quelldatei, sind zyklische<br />
Includes unvermeidlich.</p>
<p>Und genau so soll doch OO-Design der &quot;reinen OO-Lehre&quot; nach sein: Eine Menge<br />
von Objekten, die vermittels gegenseitiger Methodenaufrufe miteinander kommunizieren.</p>
<p>Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093386</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Fri, 07 Jul 2006 16:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 16:24:00 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>Zyklische Includes entstehen z.B. dadurch, daß Klasse A Bezeichner von Klasse<br />
B benötigt. z.B. in der Form<br />
void A::init(B aB, c aC) {<br />
... B.getItem(...)<br />
}</p>
<p>und Objekte vom Typ B ihrerseits Objekte vom Typ A übergeben werden und Methoden von A aufrufen.</p>
</blockquote>
<p>Dann nimmt man Referenzen als Parameter, wies sich gehört, und die Definitionsabhängigkeit ist geregelt.</p>
<blockquote>
<p>Baut man dann jede Klasse in eine eigene Quelldatei, sind zyklische<br />
Includes unvermeidlich.</p>
</blockquote>
<p>Nö, es werden ja nur die Header inkludiert.</p>
<blockquote>
<p>Und genau so soll doch OO-Design der &quot;reinen OO-Lehre&quot; nach sein: Eine Menge<br />
von Objekten, die vermittels gegenseitiger Methodenaufrufe miteinander kommunizieren.</p>
</blockquote>
<p>Das hat aber nichts mit zyklischen Includes zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093394</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 07 Jul 2006 16:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 16:23:33 GMT]]></title><description><![CDATA[<p>Bloß weil sie miteinander Kommunizieren müssen sie doch nicht gleich zyklisch abhängig sein. Abhängigkeiten sind generell ne unschöne Sache, zyklische sind fast immer Design-Fehler. Oft kann man durch Einführung einer Basisklasse solche Abhängigkeiten loswerden.</p>
<p>Dein Beispiel zeigt, daß es möglich ist zyklische Abhängigkeiten einzubauen. Kannst Du auch eines geben, das zeigt, daß es nötig ist? Wenn zwei Dinge so intensiv gekoppelt sind, daß sie gegenseitig abhängig sind, inwiefern macht es dann überhaupt Sinn sie auf diese Weise in zwei Teile zu zerlegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093395</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Jul 2006 16:23:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 17:29:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Beispiel gerne:<br />
Präzise Simulation elektronischer Schaltungen. Klasseneinteilung &quot;Transistor&quot;, &quot;Widerstand&quot;, &quot;Kondensator&quot;,&quot;Leiterbahn&quot; usw... jedes Bauteil X führt eine Liste<br />
aller Bauteilen in der Umgebung und ihrer Abstände zum Bauteil X.</p>
<p>Transistor T1 liege örtlich dicht neben Widerstand R1.<br />
Dann benötigt zur genauen Simulation T1 sowohl Wert als auch Temperatur<br />
von R1 sowie den Abstand T1---R1, denn über die Luft im Zwischenraum manipuliert<br />
die Temperatur von R1 den Arbeitspunkt von T1. Ebenso braucht R1 Daten von<br />
T1, da sich das Widerstandsrauschen mit der Umgebunstemperatur ändert.</p>
<p>Dasselbse gilt für alle Paarungen Widerstand/Kondensator (Keramikkondensatoren<br />
in HF-Schaltungen ändern ihre Kapazität mit der Umgebungswärme, also die<br />
Frequenz eines HF-Schwingkreises), Transistor/Kondensator und Transistor/Transistor, usw.</p>
<p>In allen diesen Fällen braucht transistor.h Attribute von widerstand.h und<br />
auch umgekehrt.</p>
<p>Grüße</p>
<p>PS. wenn man Bücher über OOP mit anderen Sprachen als C++ liest, dann<br />
wird man feststellen, daß die wechselseitige Beeinflussung von Objekten<br />
nicht nur unerwünscht, sondern sogar Design-Prinzip der OO ist. In Smalltalk<br />
würde man niemals zwei Klassen zu einer vereinigen, nur weil die beiden<br />
über messages eng gekoppelt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093451</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Fri, 07 Jul 2006 17:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 17:35:28 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>Beispiel gerne:<br />
Präzise Simulation elektronischer Schaltungen. Klasseneinteilung &quot;Transistor&quot;, &quot;Widerstand&quot;, &quot;Kondensator&quot;,&quot;Leiterbahn&quot; usw... jedes Bauteil X führt eine Liste<br />
aller Bauteilen in der Umgebung und ihrer Abstände zum Bauteil X.</p>
</blockquote>
<p>Da hast Du auch gleich schon ein super Stichwort mitgeliefert: Bauteil!<br />
Wir bauen eine abstrakte Basisklasse Bauteil, die alle nötigen Infos zur Verfügung stellen kann. Alle konkreten Bauteile erben davon und führen eine Liste benachbarter Bauteile. Ein wunderschönes Beispiel, wie man entkoppeln kann. Insbesondere ist es nun einfach neue Bauteile hinzuzunehmen.</p>
<p>Den Rest, daß zyklische Abhängigkeiten erwünscht seien kommentiere ich einfach nicht. Da ist mir ehrlich gesagt meine Zeit zu schade.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093455</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Jul 2006 17:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 18:02:00 GMT]]></title><description><![CDATA[<p>Ich bin in Elektronik nicht so bewandert, aber müssen die Bauteile wirklich so viel voneinander wissen, oder reichts, wenn die Schaltung die Infos hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093473</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 07 Jul 2006 18:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 20:07:29 GMT]]></title><description><![CDATA[<p>Hallo Jester,</p>
<p>aber eine abstrakte Basisklasse &quot;Bauteil&quot; zu konstruieren (das geht natürlich),<br />
die alle Eigenschaften der realen Bauteile besitzt, geht nicht.<br />
Ein Transistor braucht zum Beispiel Vierpol-Parameter, Kniespannung, PN-Übergangskapazitäten, die beim Widerstand sinnlos sind. Ein Kondensator<br />
muß modelliert werden mit Eigenschaften wie Leckstrom, den gibt's aber bei der<br />
Diode nicht und beim Transistor auch nicht.<br />
Eine Basisklasse &quot;Bauteil&quot; hätte demnach nur einen Bruchteil aller Einflußgrößen<br />
(etwa Name, Platzierung, Bauform,...) alles Elektrische wäre doch wieder vom<br />
Bauteiltyp abhängig.</p>
<p>Michael E:</p>
<p>Kommt drauf an, wie genau mal simulieren will (oder muß). Für eine<br />
Blinkerschaltung muß man keine Kondensatortemperaturen modellieren, aber<br />
für einen HF-Schwingkreis, bei dem 1% Abweichung der Kapazitäten schon<br />
10 MHz Frequenzabweichung bedeuten, ist sowas notwendig.</p>
<p>Oder denk mal an integrierte Schaltungen. Da beeinflußt jedes Bauteil<br />
jedes andere, vor allem nantürlich die in der Umgebung, da ja dort<br />
die Transistoren direkt in dasselbe Substrat eingelassen sind, in dem<br />
auch die Widerstandsbahnen liegen. Da sind Wechselwirkungen unabdingbar,<br />
vor allem wieder bei HF-Anwendungen.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093563</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Fri, 07 Jul 2006 20:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 20:18:23 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>aber eine abstrakte Basisklasse &quot;Bauteil&quot; zu konstruieren (das geht natürlich),<br />
die alle Eigenschaften der realen Bauteile besitzt, geht nicht.</p>
</blockquote>
<p>Sowas will ja auch niemand haben, der verstanden hat wie Vererbung funktioniert. Ich will nur das nötige Interface bereitstellen. Alles andere machen natürlich weiterhin die konkreten Bauteile.</p>
<p>die Idee von MichaelE gefällt mir auch sehr gut. Warum können eigentlich Wechselwirkungen nur über zyklische Abhängigkeiten, aber nicht über eine Indirektion, nämlich die Schaltung, simuliert werden?</p>
<p>Lies doch mal ein beliebiges OOP-Buch, da steht auch drin, was von zyklischen Abhängigkeiten zu halten ist. Vielleicht mal ein paar generelle Probleme von zyklischen Abhängigkeiten: Man kann nur schwierig testen, Wiederverwendung ist praktisch unmöglich, wenn man nur einen Teil davon benutzen möchte. Zuguterletzt sind hierarchische Systeme (eben solche ohne zyklische Abhängigkeiten) deutlich leichter zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093569</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Fri, 07 Jul 2006 20:18:23 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 20:24:01 GMT]]></title><description><![CDATA[<p>eigentlich braucht er ja keine zyklischen abhängigkeiten o.ä. sondern einfach nur ein paar konstanten-definitionen die von überall erreichbar sind. oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093574</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Fri, 07 Jul 2006 20:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Fri, 07 Jul 2006 20:31:05 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>PS. wenn man Bücher über OOP mit anderen Sprachen als C++ liest, dann<br />
wird man feststellen, daß die wechselseitige Beeinflussung von Objekten<br />
nicht nur unerwünscht, sondern sogar Design-Prinzip der OO ist. In Smalltalk<br />
würde man niemals zwei Klassen zu einer vereinigen, nur weil die beiden<br />
über messages eng gekoppelt sind.</p>
</blockquote>
<p>was hat das mit zyklischen abhängigkeiten zu tun? echte zyklische abhängigkeiten (um entität X definieren zu können, muss die definition von Y bekannt sein und umgekehrt) sind nicht erlaubt (außer ggf. für inline funktionen - dort ist aber der compiler für die auflösung zuständig). falsche abhängigkeiten entstehen in 95% der fälle nur, weil versucht wird, bereits beim definieren einer klasse funktionen inline zu definieren. die restlichen 5% entfallen auf etwas kompliziertere konstruktionen, die aber prinzipiell denselben fehler begehen. außerhalb von funktionen werden vollständige typen werden in C++ schließlich nur zur definition von variablen benötigt (nicht aber zu deren deklaration!) oder wenn eine klasse basisklasse einer anderen sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093578</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 07 Jul 2006 20:31:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Sat, 08 Jul 2006 07:35:07 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>wie dem auch sei, das Ziel der OOP besteht darin, ein kleines &quot;Universum&quot;<br />
aus miteinander kommunizierenden Objekten zu schaffen, und dabei sind zyklische Abhängigkeiten der Art &quot;Objekt der Klasse A ruft Methode auf Objekt der Klasse B auf&quot; und umgekehrt &quot;B Methoden von A&quot; ganz natürlich und ich sehe nicht, wieso das ein Design-Fehler sein soll. Mag sein, daß das in C++ Schwierigkeiten macht; C++ ist allerdings auch keine reine OO-Sprache; in &quot;reinen&quot; OO-Sprachen wie Smalltalk oder (annähernd &quot;rein&quot;) Ruby sind solche Arten von Objektkommunikation jedenfalls problemlos.</p>
<p>Noch ein Beispiel: Das Prinzip Model-View-Controller besteht aus drei Klassen,<br />
die im &quot;Dreiecksverhältnis&quot; kommunizieren (Controller ruft Methoden des GUI auf,<br />
GUI liefert Rückgabewerte an Model, Model berechnet neuen Wert und gibt diesen<br />
an Controller).</p>
<p>Grüße und schönes Wochenende</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093692</guid><dc:creator><![CDATA[Hobbyprogrammierer]]></dc:creator><pubDate>Sat, 08 Jul 2006 07:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Sat, 08 Jul 2006 08:24:33 GMT]]></title><description><![CDATA[<p>Hobbyprogrammierer schrieb:</p>
<blockquote>
<p>Noch ein Beispiel: Das Prinzip Model-View-Controller besteht aus drei Klassen,<br />
die im &quot;Dreiecksverhältnis&quot; kommunizieren (Controller ruft Methoden des GUI auf,<br />
GUI liefert Rückgabewerte an Model, Model berechnet neuen Wert und gibt diesen<br />
an Controller).</p>
</blockquote>
<p>Schau's Dir nochmal an. MVC entkoppelt Dinge. Die Dreieckskommunikation gibt's nicht. Model und GUI kennen sich nicht und haben auch nicht miteinander zu tun. Sie werden nur über den Controller zusammengehalten. Der einzige der beides kennt ist der Controller. Die Kommunikation von Model/View zu Controller läuft zumeist über ein abstraktes Interface zur Verarbeitung von Messages, sodaß Model/View die konkrete Implementierung des Controllers nicht kennen.</p>
<p>Ich sage ja auch nichts dagegen, daß Objekte der Klasse A Objekte Methoden von Objekten der Klasse B aufrufen und umgekehrt. Das dürfen sie gerne tun, solange wenigstens in einer Richtung durch ein Interface/Basisklasse entkoppelt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093709</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Sat, 08 Jul 2006 08:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ähnliche Frage: Include von Konstanten. on Sat, 08 Jul 2006 11:17:30 GMT]]></title><description><![CDATA[<p>Jester schrieb:</p>
<blockquote>
<p>Ich sage ja auch nichts dagegen, daß Objekte der Klasse A Objekte Methoden von Objekten der Klasse B aufrufen und umgekehrt. Das dürfen sie gerne tun, solange wenigstens in einer Richtung durch ein Interface/Basisklasse entkoppelt wurde.</p>
</blockquote>
<p>Wer den Sinn hier nicht gleich erkennt, dem empfehle ich das Studium des <a href="http://www.objectmentor.com/publications/dip.pdf" rel="nofollow">Dependency Inversion Principles</a>. Wobei das eigentlich gerade unseren OOP-Freunden bekannt sein sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093822</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:17:30 GMT</pubDate></item></channel></rss>