<?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[Erste Versuche mit header-Dateien.]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich lerne für die Uni C++ und tüftele gerade an Programmen aus Header- und Implementierungsdateien herum.<br />
Dabei habe ich ein Problem, bei dem ich nicht weiterweiss.<br />
Folgender Quellcode:</p>
<p>#include &lt;Rechnen.h&gt;</p>
<p>int main()</p>
<p>Rechnen::Rechnen()<br />
{<br />
cout &lt;&lt; &quot;Geben sie den ersten Faktor ein: &quot;&lt;&lt; endl;<br />
cin &gt;&gt; x;<br />
cout &lt;&lt; &quot;Jetzt den zweiten Faktor: &quot;&lt;&lt; endl;<br />
cin &gt;&gt; y;<br />
}</p>
<p>int Rechnen::Multiplizieren(int x, int y)<br />
{<br />
z = x*y;<br />
return z;<br />
}</p>
<p>void Rechnen::Ergebnis(int z)<br />
{<br />
cout &lt;&lt; z &lt;&lt; endl;<br />
cin &gt;&gt; z;<br />
};</p>
<p>Die Fehlermeldung hierbei ist folgende:</p>
<p>8 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp expected init-declarator before &quot;Rechnen&quot;</p>
<p>und</p>
<p>8 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp expected <code>,' or</code>;' before &quot;Rechnen&quot;</p>
<p>Wenn mir jemand helfen kann, wäre ich echt dankbar. Ich weiss, dass der Code eventuell totaler SChrott ist, also lasst es mich ruhig wissen.</p>
<p>LG, Micha</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159060/erste-versuche-mit-header-dateien</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 07:31:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159060.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Sep 2006 16:01:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 16:01:38 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich lerne für die Uni C++ und tüftele gerade an Programmen aus Header- und Implementierungsdateien herum.<br />
Dabei habe ich ein Problem, bei dem ich nicht weiterweiss.<br />
Folgender Quellcode:</p>
<p>#include &lt;Rechnen.h&gt;</p>
<p>int main()</p>
<p>Rechnen::Rechnen()<br />
{<br />
cout &lt;&lt; &quot;Geben sie den ersten Faktor ein: &quot;&lt;&lt; endl;<br />
cin &gt;&gt; x;<br />
cout &lt;&lt; &quot;Jetzt den zweiten Faktor: &quot;&lt;&lt; endl;<br />
cin &gt;&gt; y;<br />
}</p>
<p>int Rechnen::Multiplizieren(int x, int y)<br />
{<br />
z = x*y;<br />
return z;<br />
}</p>
<p>void Rechnen::Ergebnis(int z)<br />
{<br />
cout &lt;&lt; z &lt;&lt; endl;<br />
cin &gt;&gt; z;<br />
};</p>
<p>Die Fehlermeldung hierbei ist folgende:</p>
<p>8 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp expected init-declarator before &quot;Rechnen&quot;</p>
<p>und</p>
<p>8 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp expected <code>,' or</code>;' before &quot;Rechnen&quot;</p>
<p>Wenn mir jemand helfen kann, wäre ich echt dankbar. Ich weiss, dass der Code eventuell totaler SChrott ist, also lasst es mich ruhig wissen.</p>
<p>LG, Micha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135328</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 16:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 16:15:38 GMT]]></title><description><![CDATA[<pre><code>#include &lt;Rechnen.h&gt;

int main()
{ // der Inhalt von main muss in geschweifte Klammern

Rechnen::Rechnen()
{
  int x = 0; // Variablen vorher deklarieren
  int y = 0;
  std::cout &lt;&lt; &quot;Geben sie den ersten Faktor ein: &quot;&lt;&lt; endl;
  std::cin &gt;&gt; x;
  std::cin.get(); // sonst bleibt das letzte Zeichen im Puffer von cin (der                                                  // Zeilenumbruch)
  std::cout &lt;&lt; &quot;Jetzt den zweiten Faktor: &quot;&lt;&lt; endl;
  std::cin &gt;&gt; y;
  std::cin.get();
}

int Rechnen::Multiplizieren(int x, int y)
{
  int z = 0; //s.o.
  z = x*y;
  return z;
}

void Rechnen::Ergebnis(int z)
{
  std::cout &lt;&lt; z &lt;&lt; endl;
  std::cin &gt;&gt; z;
  std::cin.get();
};

} // main
</code></pre>
<p>std:: ist die qualifikation des namespaces. alternativ kannst du auch vor der main &quot;using namespace std;&quot; benutzen, dann musst du es nicht jedesmal davor schreiben.</p>
<p>gruss bumbytie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135341</guid><dc:creator><![CDATA[bumbytie]]></dc:creator><pubDate>Mon, 11 Sep 2006 16:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 17:16:55 GMT]]></title><description><![CDATA[<p>Danke für den Beitrag. Ich hab x, y in der headerdatei initialisiert. Auch &quot;using namespace std&quot; habe ich dort angegeben.</p>
<p>Hab jetzt mal deinen code probiert. Klappt aber immer noch nicht ganz. Ich werde nochmal etwas weiter tüfteln.</p>
<p>Micha.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135377</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 17:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:15:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;Rechnen.h&gt;

int x = 0;
int y = 0;
int z = 0;

int main()

{

  cout &lt;&lt; &quot;Geben sie den ersten Faktor ein: &quot;&lt;&lt; endl;
  cin &gt;&gt; x;
  cin.get();
  cout &lt;&lt; &quot;Jetzt den zweiten Faktor: &quot;&lt;&lt; endl;
  cin &gt;&gt; y;
  cin.get();

Rechnen::Rechnen();

int Rechnen::Multiplizieren(int x,int y);
{
  z = x*y;
  return z;
}

void Rechnen::Ergebnis(int z);
{
  cout &lt;&lt; z &lt;&lt; endl;
  cin &gt;&gt; z;
  cin.get();
}

} // main
</code></pre>
<p>das ist jetzt meine implementierungsdatei. Die einzigen fehlermeldungen sind folgende für beide Funktionen:</p>
<p>22 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp declaration of `int Rechnen::Multiplizieren(int, int)' outside of class is not definition</p>
<p>28 C:\Programme\Dev-Cpp\VERSUCHE\Rechnen\Rechnen.cpp declaration of `void Rechnen::Ergebnis(int)' outside of class is not definition</p>
<p>Weiß jemand was noch falsch sein könnte? Hier ist übrigens meine Header-datei:</p>
<pre><code class="language-cpp">#ifndef _Rechnen_H
#define _Rechnen_H

#include &lt;iostream&gt;

using namespace std;

class Rechnen
{
      int x,y,z;

      public:
             Rechnen();
             int Multiplizieren(int,int);
             void Ergebnis(int);

};

#endif
</code></pre>
<p>hab noch nicht ganz verstanden warum das &quot;if&quot; hier ist.</p>
<p>Micha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135416</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:31:21 GMT]]></title><description><![CDATA[<p>Nimm das using namespace std; aus dem Header raus und pack es in die cpp. Wenn überhaupt, dürfen using namespace Direktiven höchstens in der cpp sein. Die iostream brauchst du hier eigentlich auch nicht.<br />
Die beide Funktionensdefinitionen (Multiplizieren und Ergebnis) müssen aus der main raus. Du darfst Funktionen nicht innerhalb von anderen Funktionen definieren.<br />
Wo ist die Definition von Rechnen()?<br />
bumbytie und Narados: Lest euch beide nochmal ein Tutorial durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135421</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:36:01 GMT]]></title><description><![CDATA[<p>Hab das so verstanden, dass jede Klasse einen Konstruktor braucht, der so wie &quot;Rechnen()&quot; dargestellt wird.</p>
<p>Das mit dem Tutorial nehm ich mir gerne zu Herzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135423</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:38:26 GMT]]></title><description><![CDATA[<p>...und wo müssten die beiden Funktionen Multiplizieren und ERgebnis definiert werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135425</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:45:53 GMT]]></title><description><![CDATA[<p>Wenn du ne Klasse schreibst, mach es erstmal so:</p>
<p>Die Deklarationen kommen in die so genannte Header-Datei:</p>
<p>Rechnen.h</p>
<pre><code class="language-cpp">#ifndef Rechnen_h
#define Rechnen_h

class Rechnen
{
public:
    Rechnen();
    int Multiplizieren(int x, int y);
};

#endif
</code></pre>
<p>Die Definition der Konstruktoren und Methoden kommen in eine zugehörige cpp-Datei:</p>
<p>Rechnen.cpp</p>
<pre><code class="language-cpp">#include &quot;Rechnen.h&quot; // beachte die Hochkommata

Rechnen::Rechnen()
{
    // Code im Konstruktor
}

int Rechnen::Multiplizieren(int x, int y)
{
    // Code fürs Multiplizieren
}
</code></pre>
<p>Nun hast du ne Klasse, die du - zum Beispiel in deiner main-Funktion - benutzen kannst:</p>
<p>MeinErsterCode.cpp:</p>
<pre><code class="language-cpp">#include &quot;Rechnen.h&quot; // Klasse einbinden

int main(int argc, char** argv)
{
    // Instanz erstellen
    Rechnen r;

    // Methode vom Objekt r benutzen
    r.Multiplizieren(4711, 815);

    return 0;
}
</code></pre>
<p>In der Klasse fehlt jetzt natürlich die Funktionalität und andere wichtige Sachen, z.B. der Destruktor.<br />
Soll die nur mal verdeutlichen, wie die Struktur der Dateien aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135431</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 18:49:51 GMT]]></title><description><![CDATA[<p>über oder unter der main oder in einer separaten Datei.<br />
Jede Klasse braucht einen Konstruktor. Allerdings erzeugt der Compiler dir schon standardmäßig einen, der in deinem Fall auch ausreicht. Wenn du aber einen eigenen Konstruktor haben willst, dann mußt du ihn nicht nur deklarieren, sonder auch definieren. Dies kannst du auch beides zusammen in deinem Header machen.</p>
<pre><code class="language-cpp">#ifndef _Rechnen_H
#define _Rechnen_H

class Rechnen
{
  int x,y,z; // wofür brauchst du hier die Variablen?

  public:
    Rechnen(); // hier nur deklariert
    Rechnen()
    {
      // jetzt deklariert und definiert und unnötig, da er nichts macht
    }
    int Multiplizieren(int,int);
    void Ergebnis(int);

};
#endif
</code></pre>
<p>und jetzt noch die cpp</p>
<pre><code class="language-cpp">#include &lt;Rechnen.h&gt;
#include &lt;iostream&gt; // hier rein

using namespace std;

int Rechnen::Multiplizieren(int x,int y);
{
  z = x*y;
  return z;
}

void Rechnen::Ergebnis(int z);
{
  cout &lt;&lt; z &lt;&lt; endl;
  cin &gt;&gt; z;
  cin.get();
}

int main()
{
// Variable besser nicht global deklarieren
  int x = 0;
  int y = 0;
  int z = 0;
  cout &lt;&lt; &quot;Geben sie den ersten Faktor ein: &quot;&lt;&lt; endl;
  cin &gt;&gt; x;
  cin.get();
  cout &lt;&lt; &quot;Jetzt den zweiten Faktor: &quot;&lt;&lt; endl;
  cin &gt;&gt; y;
  Rechnen rech; // Objekt deiner Klasse erstellen
  z = rech.Multiplizieren(x, y); // Funktion Multiplizieren aufrufen
  rech.Ergebnis(int z); //Ergebnis ausgeben
//  cin.get(); // jetzt nicht mehr nötig, da das schon in Ergebnis drinsteht
} // main
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1135434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135434</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 11 Sep 2006 18:49:51 GMT</pubDate></item><item><title><![CDATA[Reply to Erste Versuche mit header-Dateien. on Mon, 11 Sep 2006 19:18:35 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure Hilfe. Ihr habt mich alle zwar etwas verwirrt, weil es soviele verschiedene Ansätze gab, aber ich hab es schlussendlich doch geschafft (durch euch).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135455</guid><dc:creator><![CDATA[Narados]]></dc:creator><pubDate>Mon, 11 Sep 2006 19:18:35 GMT</pubDate></item></channel></rss>