<?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[Variable für mehere Klassen zugänglich machen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Variable für 2 Klassen (in 2 Dateien) zugänglich machen, also so, dass beide darauf zugreifen können. Aber wie?<br />
Ich habe die Varibale in der einen Datei im header puclic definiert, und die Header-Datei in die andere Datei miteingebunden. Was muss ich noch machen?</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170290/variable-für-mehere-klassen-zugänglich-machen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 03:33:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170290.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Jan 2007 07:29:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Sun, 14 Jan 2007 07:29:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine Variable für 2 Klassen (in 2 Dateien) zugänglich machen, also so, dass beide darauf zugreifen können. Aber wie?<br />
Ich habe die Varibale in der einen Datei im header puclic definiert, und die Header-Datei in die andere Datei miteingebunden. Was muss ich noch machen?</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209519</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Sun, 14 Jan 2007 07:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Sun, 14 Jan 2007 09:41:19 GMT]]></title><description><![CDATA[<p>Zugreifen.<br />
PS: Getter und setter zu verwenden ist etwas besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209534</guid><dc:creator><![CDATA[äh...]]></dc:creator><pubDate>Sun, 14 Jan 2007 09:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Sun, 14 Jan 2007 09:45:43 GMT]]></title><description><![CDATA[<p>Jo, also besser wären schon getter, aber wenn du es für angebracht hältst, wäre es auch möglich, dass du die zweite Klasse zum friend der ersten machst. So kannst du das Attribut private lassen und die andere Klasse hat trotzdem Schreibzugriff (was ja beim reinen getter normalerweise nicht der Fall ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209536</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 14 Jan 2007 09:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Sun, 14 Jan 2007 09:54:25 GMT]]></title><description><![CDATA[<p>Sorry, von getter und setter habe ich noch nie etwas gehört... Und von friend auch nicht...<br />
Könnt Ihr mir vielleicht kurz erklären, wie das mit getter und setter funktioniert?</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209542</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Sun, 14 Jan 2007 09:54:25 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Sun, 14 Jan 2007 10:56:36 GMT]]></title><description><![CDATA[<p>Jo, also getter und setter:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

//Konstruktoren usw. spar ich mir jetzt mal...
class Foo {
  int value;

public:
  //setter, man beachte das if, welches nur Werte größer 0 zulässt
  void set(int i) {
    if (i &gt; 0)
      value = i;
  }

  //getter
  int get() const { return value; }

  //Wir machen Klasse bar zum Freund dieser Klasse, das heißt Bar darf auf private Elemente schreibend zugreifen.
  friend class Bar;
};

class Bar {

public:
  void fun(Foo &amp;f) { f.value = -1; }  //uh ah
};

int main() {
  Foo f;
  f.set(7);

  Bar b;
  b.fun(f);
  std::cout&lt;&lt;f.get()&lt;&lt;std::endl;

  return 0;
}
</code></pre>
<p>Wie du siehst, kann man mit friend ziemlich böse Sachen machen. So wurde in dem Fall die if - Prüfung von Foo.set einfach übergangen, weil ich direkt auf Foo.value schreiben konnte.</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209546</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Sun, 14 Jan 2007 10:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Mon, 15 Jan 2007 07:21:31 GMT]]></title><description><![CDATA[<p>Sorry, aber so ganz habe ich das dann doch nicht verstanden.<br />
Angenommen, ich hätte in einer Klasse einen Vektor definiert;</p>
<pre><code class="language-cpp">vector&lt;int&gt; vektor;
</code></pre>
<p>Wie kann ich dann aus der anderen Klasse darauf zugreifen? Also ohne get und set am liebsten???<br />
Bei mir kann er schon mit dem</p>
<pre><code class="language-cpp">Ram RAM
</code></pre>
<p>nicht umgehen (also Ram ist Klassenname). Muss ich denn die Header der Dateien noch irgendwie besonders includen in der anderen Datei?</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209549</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Mon, 15 Jan 2007 07:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Mon, 15 Jan 2007 08:19:54 GMT]]></title><description><![CDATA[<p>Bist du dir überhaupt klar, was du vorhast? Eine Member-Variable gehört immer zu einem bestimmten Exemplar deiner Klasse (ausgenommen statische Member, die gehören der gesamten Klasse). Und diese Exemplare kannst du überall anlegen, wo du es brauchst.</p>
<pre><code class="language-cpp">class C1
{
private:
  vector&lt;int&gt; data;
  static int global;
  friend class C2;//hiermit bekommt C2 vollen Zugriff auf C1's private Elemente
  ...
};

class C2
{
public:
  void fill(C1&amp; user)//bekommt ein C1 Objekt übergeben
  {
    int val = ...;
    user.data.push_back(val);//Zugriff auf normalen Klassen-Member
    C1::global=val;          //Zugriff auf statischen Member
  }
  ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1210048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210048</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 15 Jan 2007 08:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Mon, 15 Jan 2007 09:05:13 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also was ich vorhabe, ist mit klar; nur eben nicht wie!</p>
<p>Um noch einmal genau zu schreiben, was ich möchte:<br />
Ich habe 6 Dateien:<br />
mac.h<br />
<a href="http://mac.cc" rel="nofollow">mac.cc</a><br />
ram.h<br />
<a href="http://ram.cc" rel="nofollow">ram.cc</a><br />
dis.h<br />
<a href="http://dis.cc" rel="nofollow">dis.cc</a></p>
<p>in der ram.h habe ich einen Vektor RAM definiert, auf den dann die Funktionen aus mac und dis zugreifen sollen; lesend und schreibend. Und das bekomme ich eben nicht hin, irgendwie auch nicht mit dem fried class...</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210066</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Mon, 15 Jan 2007 09:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Mon, 15 Jan 2007 10:37:30 GMT]]></title><description><![CDATA[<p>Wo genau steht denn dieser Vektor?<br />
Innnerhalb der Klasse &quot;ram&quot;? - da brauchst du ein Objekt, über den du zugreifen kannst<br />
Global? - da wäre sicher eine extern-Definition das richtige?<br />
...</p>
<p>(oder kurz: mit deinen Angaben verwirrst du alle Anwesenden - zeig doch einfach etwas Code, wie du das Programm bisher aufgebaut hat (inklusive möglicher Fehlermeldungen))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210127</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 15 Jan 2007 10:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Tue, 16 Jan 2007 18:57:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ehrlich gesagt ist es mir egal, wo der Vektor steht...<br />
Das ganze handelt sich qausi um eine Simulation, weshalb ich diese &quot;Umgebung&quot; aufrecht erhalten muss.<br />
Wichtig ist eben nur, dass mac und dis auf den Vektor in ram zugreifen können.</p>
<p>Code gibt es bisher kaum; das war so gut wie mein Anfang...</p>
<p>MfG, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210966</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Tue, 16 Jan 2007 18:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Wed, 17 Jan 2007 08:11:09 GMT]]></title><description><![CDATA[<p>Da hast du prinzipiell drei Möglichkeiten, das Problem anzugehen:</p>
<ol>
<li>als normale Membervariable der Klasse ram<br />
(in dem Fall hat jedes Objekt dieser Klasse seinen eigenen Vektor und du kannst über normalen Member-Zugriff daran gelangen)</li>
</ol>
<pre><code class="language-cpp">//ram.h
class ram
{
public:
  vector&lt;int&gt; data;
};

//irgendwo in einer der anderen Klassen:
#incude &quot;ram.h&quot;
...
ram my_ram;
int datalen = my_ram.data.size();
...
</code></pre>
<ol>
<li>als statische Membervariable der Klasse ram<br />
(das heißt es gibt einen Vektor für alle Objekte der Klasse)</li>
</ol>
<pre><code class="language-cpp">//ram.h
class ram
{
public:
  static vector&lt;int&gt; data;
};

//ram.cc
#include &quot;ram.h&quot;
vector&lt;int&gt; ram::data;

//irgendwo anders
#include &quot;ram.h&quot;
...
int datalen=ram::data.size();//der Zugriff wie in Beispiel (a) ist auch möglich
</code></pre>
<ol>
<li>als globale Variable<br />
(die ist dann unabhängig von einer der Klassen verfügbar</li>
</ol>
<pre><code class="language-cpp">//ram.h
extern vector&lt;int&gt; data;

class ram{...};

//ram.cc
#include &quot;ram.h&quot;
vector&lt;int&gt; data;

//irgendwo anders
#include &quot;ram.h&quot;
...
int datalen=data.size();
</code></pre>
<p>Such dir die Variante aus, die am geeignetsten ist</p>
<p>PS: Im Fall a und b würde ich vermutlich die Variable privat definieren und nur über definierte (normale bzw. statische) Methoden auf ihren Inhalt zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211134</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Jan 2007 08:11:09 GMT</pubDate></item><item><title><![CDATA[Reply to Variable für mehere Klassen zugänglich machen on Thu, 18 Jan 2007 06:35:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>vielen, vielen Dank für Deine super ausführliche Antwort!!! Ich habe auch das Richtige für mich gefunden!!!</p>
<p>Vielen Dank noch einmal, Ozzy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211722</guid><dc:creator><![CDATA[Ozzy]]></dc:creator><pubDate>Thu, 18 Jan 2007 06:35:34 GMT</pubDate></item></channel></rss>