<?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[Memberfunktion von KlasseA in KlasseB verwenden]]></title><description><![CDATA[<p>Hallo, ich bins schon wieder.</p>
<p>Ich bin gerade dabei einen recht komplexen Code zu modifizieren, und versuche diesen Code erstmal durch einfache Codeschnipsel zu verstehen. Da ich mich aber noch immer noch als Anfaenger bezeichnen muss, bekomme ich immer wieder Probleme.</p>
<p>Folgenden Code habe ich mir zusammengetippt:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

struct myClass1 {
  ofstream *outfile;
  double x1, x2, xout;
  double yout[6];

  myClass1(ofstream *file) : outfile(file) {}

  void save(double x) {
  }
};

struct myClass2 {
  myClass1 out;

  myClass2(myClass1 Obj) : out(Obj) {}

  out.save(15.0);
};

int main(int argc, char **argv)
{
  ofstream outfile(&quot;out.res&quot;);
  return 0;
}
</code></pre>
<p>Der Compiler meckert aber folgendes:</p>
<pre><code>test_class.cc:22: error: ISO C++ forbids declaration of 'out' with no type
test_class.cc:22: error: expected ';' before '.' token
</code></pre>
<p>Ich verstehe nicht, warum er 'out' nicht kennt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Vielen Dank,<br />
HarryKane</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216654/memberfunktion-von-klassea-in-klasseb-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 06:11:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216654.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jun 2008 13:54:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 13:55:06 GMT]]></title><description><![CDATA[<p>Hallo, ich bins schon wieder.</p>
<p>Ich bin gerade dabei einen recht komplexen Code zu modifizieren, und versuche diesen Code erstmal durch einfache Codeschnipsel zu verstehen. Da ich mich aber noch immer noch als Anfaenger bezeichnen muss, bekomme ich immer wieder Probleme.</p>
<p>Folgenden Code habe ich mir zusammengetippt:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

struct myClass1 {
  ofstream *outfile;
  double x1, x2, xout;
  double yout[6];

  myClass1(ofstream *file) : outfile(file) {}

  void save(double x) {
  }
};

struct myClass2 {
  myClass1 out;

  myClass2(myClass1 Obj) : out(Obj) {}

  out.save(15.0);
};

int main(int argc, char **argv)
{
  ofstream outfile(&quot;out.res&quot;);
  return 0;
}
</code></pre>
<p>Der Compiler meckert aber folgendes:</p>
<pre><code>test_class.cc:22: error: ISO C++ forbids declaration of 'out' with no type
test_class.cc:22: error: expected ';' before '.' token
</code></pre>
<p>Ich verstehe nicht, warum er 'out' nicht kennt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Vielen Dank,<br />
HarryKane</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536383</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 26 Jun 2008 13:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 13:57:38 GMT]]></title><description><![CDATA[<p>wieso struct, wenn du Klassen willst? out.save muss dann schon in ne Methode</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536386</guid><dc:creator><![CDATA[na]]></dc:creator><pubDate>Thu, 26 Jun 2008 13:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:01:32 GMT]]></title><description><![CDATA[<p>Also das mit dem struct ist halt weil das so vom OrginalCode kommt. struct ist ja nix anderes als class, nur dass es von vorn herein public ist.</p>
<blockquote>
<p>out.save muss dann schon in ne Methode</p>
</blockquote>
<p>Sorry, manchmal (nein, was C++ angeht eher haeufiger) bin ich etwas schwer von Begriff. Kannst du das bitte fuer mich idiotensicher erklaeren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536391</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:05:49 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>1. Von Datenkapselung schon was gehört?<br />
2. Willst du hier wirklich eine KOPIE übergeben: (Dann bitte nicht Kopierkonstruktor... vergessen)</p>
<pre><code class="language-cpp">struct myClass2
{
  myClass1 out;
  myClass2(myClass1 Obj) // Kopie1
  : out(Obj)             // Kopie2
  {}
};
</code></pre>
<p>Wenn die Übergabe notwendig ist, und es das gleiche Objekt bleiben soll würde ich mit einer Referenz arbeiten. Oder zumindest würde ich den Parameter des Konstruktor in eine const Reference umwandeln um zumindestens nur eine Kopie anzulegen.</p>
<p>Zu den Rest gibt es schon Kommentare, davon abgesehen kräuseln sich meine Fußnägel von dem Code...</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536398</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:05:49 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:07:50 GMT]]></title><description><![CDATA[<p>Du kannst in Klassen nicht einfach so nen Aufrufbefehl reinschreiben. Was du da geschrieben hast ist wie:</p>
<pre><code class="language-cpp">class foo{
  std::cout&lt;&lt;&quot;Hallo&quot;;
}
</code></pre>
<p>In einer Klasse (oder struct, ist ja egal) musst du das halt alles in Methoden (Also Klassenfunktionen) reinschreiben. Einfach so macht es ja auch keinen Sinn, wie sollte man es denn aufrufen?</p>
<p>EDIT: Too late.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536400</guid><dc:creator><![CDATA[Shinja]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:08:16 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<blockquote>
<p>out.save muss dann schon in ne Methode</p>
</blockquote>
<p>Sorry, manchmal (nein, was C++ angeht eher haeufiger) bin ich etwas schwer von Begriff. Kannst du das bitte fuer mich idiotensicher erklaeren?</p>
</blockquote>
<p>Wann willst du Save aufrufen? Mit sicherheit wenn irgendwas ausgeführt wird. Und wie führt man etwas aus? In dem man eine Funktion/Methode aufruft. Ein Aufruf kann aber niemals alleine stehen, sondern muss selbst in einer Funktion/Methode enthalten sein.</p>
<p>z.B.:</p>
<pre><code class="language-cpp">struct myClass2 {
  //...

  void Save()
  {
    out.save(15.0);
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1536402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536402</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:08:52 GMT]]></title><description><![CDATA[<p>harrykane schrieb:</p>
<blockquote>
<blockquote>
<p>out.save muss dann schon in ne Methode</p>
</blockquote>
<p>Sorry, manchmal (nein, was C++ angeht eher haeufiger) bin ich etwas schwer von Begriff. Kannst du das bitte fuer mich idiotensicher erklaeren?</p>
</blockquote>
<p>also folgendes:</p>
<pre><code class="language-cpp">out.save(15.0);
</code></pre>
<p>ist ein Funktionsaufruf.<br />
Der muss in einem Block stehen, wo Funktionsaufrufe auch getätigt werden dürfen - sprich er muss irgendwo im &quot;Programm&quot; bzw in der Eintrittsfunktion oder einer anderen Funktion (die irgendwo aufgerufen wird) stehen.<br />
Momentan steht er inmitten deiner Klassendeklaration(-definition), die ja nur festlegt, welche Member deine 2 Klassen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536403</guid><dc:creator><![CDATA[ris]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:08:52 GMT</pubDate></item><item><title><![CDATA[Reply to Memberfunktion von KlasseA in KlasseB verwenden on Thu, 26 Jun 2008 14:35:01 GMT]]></title><description><![CDATA[<blockquote>
<p>Wann willst du Save aufrufen? Mit sicherheit wenn irgendwas ausgeführt wird. Und wie führt man etwas aus? In dem man eine Funktion/Methode aufruft. Ein Aufruf kann aber niemals alleine stehen, sondern muss selbst in einer Funktion/Methode enthalten sein.</p>
</blockquote>
<blockquote>
<p>[...]ist ein Funktionsaufruf.<br />
Der muss in einem Block stehen, wo Funktionsaufrufe auch getätigt werden dürfen - sprich er muss irgendwo im &quot;Programm&quot; bzw in der Eintrittsfunktion oder einer anderen Funktion (die irgendwo aufgerufen wird) stehen.<br />
Momentan steht er inmitten deiner Klassendeklaration(-definition), die ja nur festlegt, welche Member deine 2 Klassen haben.</p>
</blockquote>
<p>Jetzt hab ichs kapiert. Manchmal bin ich so ein Trottel, da hab ich beim Vereinfachen wohl etwas zu sehr vereinfacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>1. Von Datenkapselung schon was gehört?<br />
2. Willst du hier wirklich eine KOPIE übergeben: (Dann bitte nicht Kopierkonstruktor... vergessen)</p>
</blockquote>
<p>1. Ja, entfernt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Scherz beiseite, der Code stammt nun mal nicht von mir, ich versuche nur zu verstehen was die Schreiberlinge gemacht haben.<br />
2. Weiss ich noch nicht. Letztendlich wohl eher nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536434</guid><dc:creator><![CDATA[harrykane]]></dc:creator><pubDate>Thu, 26 Jun 2008 14:35:01 GMT</pubDate></item></channel></rss>