<?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[Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen?]]></title><description><![CDATA[<p>Hi,<br />
ne ganz dumme Frage zu Headern und Klassen. Folgendes geht bei mir nicht:</p>
<p>Es gibt eine Klasse Tisch mit Funktionen etc.<br />
Alle Funktionen stehen in der Datei &quot;Tisch.cpp&quot;. Die Datei sieht in etwa so aus:</p>
<pre><code class="language-cpp">#include &quot;Tisch.h&quot;

Tisch::Tisch()
{
}

int Tisch::AnzahlTischBeine()
{
return TischBeine;
}

//usw.
</code></pre>
<p>Der passende Header &quot;Tisch.h&quot; enthält nur die Klassen Deklaration, also so:</p>
<pre><code class="language-cpp">//Header Guards
class Tisch
{
  private:
    int AnzahlTischBeine();
    //usw.
  private:
    int TischBein;
}
</code></pre>
<p>In der main.cpp wird dann einfach &quot;Tisch.h&quot; eingebunden und die Funktionen ganz normal aufgerufen. Kompiliert wird das Ganze auch, nur sagt er mir dann sofort:</p>
<pre><code>undefined reference to .....
</code></pre>
<p>Was hab ich falsch gemacht?^^ Was muss wie worum eingebunden werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189776/klassendeklaration-in-header-funktionen-in-cpp-datei-wie-bekomm-ich-das-zusammen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 11:35:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189776.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2007 16:37:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 16:37:13 GMT]]></title><description><![CDATA[<p>Hi,<br />
ne ganz dumme Frage zu Headern und Klassen. Folgendes geht bei mir nicht:</p>
<p>Es gibt eine Klasse Tisch mit Funktionen etc.<br />
Alle Funktionen stehen in der Datei &quot;Tisch.cpp&quot;. Die Datei sieht in etwa so aus:</p>
<pre><code class="language-cpp">#include &quot;Tisch.h&quot;

Tisch::Tisch()
{
}

int Tisch::AnzahlTischBeine()
{
return TischBeine;
}

//usw.
</code></pre>
<p>Der passende Header &quot;Tisch.h&quot; enthält nur die Klassen Deklaration, also so:</p>
<pre><code class="language-cpp">//Header Guards
class Tisch
{
  private:
    int AnzahlTischBeine();
    //usw.
  private:
    int TischBein;
}
</code></pre>
<p>In der main.cpp wird dann einfach &quot;Tisch.h&quot; eingebunden und die Funktionen ganz normal aufgerufen. Kompiliert wird das Ganze auch, nur sagt er mir dann sofort:</p>
<pre><code>undefined reference to .....
</code></pre>
<p>Was hab ich falsch gemacht?^^ Was muss wie worum eingebunden werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345897</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 16:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:00:17 GMT]]></title><description><![CDATA[<p>du musst die <strong>Tisch.cpp</strong> ebenfalls kompilieren und linken.<br />
ich vermute du compilierst lediglich die <strong>main.cpp</strong>, oder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Prinzipiel musst du immer alle cpp-Dateien kompilieren. Der Linker verbindet dann letztlich die daraus entstehenden object-dateien zu einer exe.<br />
undefined reference bedeutet, dass er einen link nicht auflösen kann...</p>
<p>ist es nur ein copy paste error oder fehlt am ende der klassendeklaration der &quot;;&quot;? Ach udn den Konstruktor solltest du ebenfalls deklarieren.</p>
<pre><code class="language-cpp">#ifndef TISCH_H
#define TISCH_H

class Tisch
{ 
public:
   Tisch();

... 
};//&lt;-!!!
</code></pre>
<p>komplett schaut es dann so aus:</p>
<pre><code class="language-cpp">//----- Tisch.h -----
#ifndef TISCH_H
#define TISCH_H
class Tisch 
{ 
public:
   Tisch();
   ~Tisch();
   int getAnzahlTischBeine(); 
private: 
   int tischBeine; 
};

#endif //TISCH_H

//----- Tisch.cpp -----
#include &quot;./Tisch.h&quot;

Tisch::Tisch() : TischBein(0)
{
}
Tisch::~Tisch() 
{
}
int Tisch::getAnzahlTischBeine() 
{
   return tischBeine;
}

//----- main.cpp -----

#include &quot;./Tisch.h&quot;

int main()
{
   Tisch tisch;
   tisch.getAnzahlTischBeine();
}
</code></pre>
<p>i.A. sollten so &quot;kurze&quot; MEthoden entweder im Header ausprogrammiert werden oder eine inline Methode sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345902</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 16:55:17 GMT]]></title><description><![CDATA[<p>Gibt es nur ein TischBein oder gibt es mehrere TischBeine? Da mußt Du Dich entscheiden. <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 />
Außerdem fehlt der Konstruktor in der Klassendefinition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345905</guid><dc:creator><![CDATA[martin_salo]]></dc:creator><pubDate>Thu, 16 Aug 2007 16:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:15:50 GMT]]></title><description><![CDATA[<p>Ja das war nur ein schnell ausgedachtes, sehr dummes und vom Code her nicht wirklich richtiges Beispiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> es sei mir verziehen <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="😃"
    /></p>
<p>Also,<br />
folgendes:<br />
Meine Klasse und der Header befinden sich momentan in einem Testprojekt (muss ja schließlich schauen ob die Klasse auch geht). Ich habe also 1 Projekt mit 3 Dateien offen. Ich gehe auf den Reiter &quot;Tisch.cpp&quot; (wo wir wieder beim dummen Beispiel wären) und sagen &quot;build&quot;-&gt;selber Error.<br />
Dann gehe ich auf den Reiter &quot;main.cpp&quot; und sagen &quot;Build and Run&quot;-&gt;selber Error.</p>
<p>Ich nutze CodeBlocks, falls das damit etwas zu tun hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345910</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:24:12 GMT]]></title><description><![CDATA[<p>Geht es um obigen Source Code? Wenn nicht solltest Du uns den Abschnitt zeigen der den Fehler verursacht. Außerdem wäre die vollständige Fehlermeldung auch nicht schlecht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345916</guid><dc:creator><![CDATA[martin_salo]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:37:18 GMT]]></title><description><![CDATA[<p>Es geht bei beiden nicht. Hab gerade die Tisch-Klasse mal rüberkopiert (und neues Projekt) aber keine Änderung - Fehler ist auch dabei derselbe</p>
<p>Gesamte Fehldermeldung ist bei &quot;Build and Run&quot; bzw. &quot;build&quot; so:</p>
<pre><code>obj\Debug\main.o:: In function `main': D:/Programmieren/C++/Programme/test/main.cpp:6: undefined reference to `Tisch::Tisch()'
: D:\Programmieren\C++\Programme\test\main.cpp:7: undefined reference to `Tisch::getAnzahlTischBeine()'
: D:\Programmieren\C++\Programme\test\main.cpp:8: undefined reference to `Tisch::~Tisch()'
: D:\Programmieren\C++\Programme\test\main.cpp:8: undefined reference to `Tisch::~Tisch()'
:: === Build finished: 3 errors, 0 warnings ===
</code></pre>
<p>Main sieht so aus:</p>
<pre><code class="language-cpp">#include &quot;Tisch.h&quot;
#include &lt;iostream&gt;

int main()
{
   Tisch tisch;
   std :: cout &lt;&lt; tisch.getAnzahlTischBeine() &lt;&lt; std :: endl;
   return 0;
}
</code></pre>
<p>Header und Tisch.cpp sind natürlich im Programmordner vorhanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345923</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:37:18 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:42:24 GMT]]></title><description><![CDATA[<p>Hast du den destructor und getTischbein... auch (wie bei &quot;muffelmolch&quot;) implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345928</guid><dc:creator><![CDATA[Fragegg]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:54:37 GMT]]></title><description><![CDATA[<p>Ich hab den Code eins zu eins kopiert und in die entsprechenden drei Dateien aufgeteilt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345937</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 17:56:22 GMT]]></title><description><![CDATA[<p>Aber (bitte nich schlagen wenns falsch ist) der konstruktor wird ja auch ohne probleme aufgerufen, also kanns ja eigentlich nur an der implementation liegen.<br />
Aber lösch doch einfach mal die temporären dateien...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345940</guid><dc:creator><![CDATA[gfhg]]></dc:creator><pubDate>Thu, 16 Aug 2007 17:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 18:16:09 GMT]]></title><description><![CDATA[<p>Der De- bzw. Konstruktor kann auch vom compiler selber erstellt werden, es ist nicht immer notwendig einen selber zu schreiben. Vielleicht mischt sich CodeBlocks da ein. Komisch ist nur, dass dann kein Destruktor von CodeBlocks erstellt wird.<br />
Was ich komisch finde ist die Tatsache, wie mein Programm überhaupt an die Funktionen kommen soll. Hier mal ne &quot;Grafik&quot; wie der Präprozessor vorgehen müsste (wenns falsch ist bitte sagen :D)</p>
<p>main.cpp -&gt; include -&gt; Tisch.h =&gt; Funktionsnamen bekannt =&gt; Programm wird ausgeführt =&gt; griff ins leere, da Funktion nicht gefunden wurde</p>
<p>Tisch.cpp -&gt; include -&gt; Tisch.h =&gt; Funktionsnamen bekannt =&gt; Funktionen werden zugeordnet</p>
<p>Nur wie komm ich nun vom include auf die Tisch.cpp, also die Datei, die die eigentlichen Funktionen enthält? Bisher kenne ich ja nur die Funktionsnamen (und ihr Verhältnis zueinander) aber nicht die eigentlichen Funktionen.</p>
<p>Edit: Hab das Projekt mal ganz geschlossen, neu geöffnet und kompiliert - ohne Erfolg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345946</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 18:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 18:37:06 GMT]]></title><description><![CDATA[<p>In Deinem ersten Posting hast Du den Konstruktor in der Cpp aber nicht im Header gehabt. Wenn der Kompiler also den Konstruktor selbst erstellt (weil keiner im Header) könnte er ziemlich sauer werden wenn er feststellt das er sich die arbeit hätte sparen können weil in der cpp doch einer ist <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="😃"
    /></p>
<p>Der Präprozessor fügt nur den Quellcode zusammen. Da wird kein Programm ausgeführt. Der Compiler führt auch kein Programm aus, er kompiliert NUR die vom Preprozessor bearbeiteten cpp Dateien. Der Linker klatscht dann die kompilierten cpp Dateien zu einer Exe zusammen. Jetzt sind die Funktionen alle da. Nun erst startet der Debugger von main() aus.</p>
<p>Hier ist mein Versuch:</p>
<pre><code class="language-cpp">#ifndef TISCH_H
#define TISCH_H
class Tisch {
public:
   Tisch();
   ~Tisch();

   int GetAnzahlTischBeine();

private:
   int m_iAnzahlTischBeine;
};

#endif //TISCH_H

//----- Tisch.cpp -----
#include &quot;Tisch.h&quot;
Tisch::Tisch() {
}
Tisch::~Tisch() {
}
int Tisch::GetAnzahlTischBeine() {
   return m_iAnzahlTischBeine;
}

//----- main.cpp -----
#include &quot;Tisch.h&quot;

int main() {
   Tisch oTisch;
   oTisch.GetAnzahlTischBeine();

   return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1345956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345956</guid><dc:creator><![CDATA[martin_salo]]></dc:creator><pubDate>Thu, 16 Aug 2007 18:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Thu, 16 Aug 2007 18:47:03 GMT]]></title><description><![CDATA[<p>Ich habs nun gefunden. Klar es war ein Linker Fehler und zwar wurde die Tisch.cpp nicht gefunden (wuhhaa).<br />
Hab nun im Projekt-&gt;Eigenschaften-&gt;&quot;Build&quot;: &quot;Build Target Files&quot; die .cpp und .h Dateien ausgewählt und nun gehts.<br />
Scheinbar war das Problem, dass beim kompilieren (egal über welche Datei ich es gemacht habe) das Projekt kompiliert wurde. Da die Einstellungen des Projektes aber nur die main.cpp vorsahen zu kompilieren konnte das ja nicht richtig gehen <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="😃"
    /></p>
<p>Also weniger ein Fehler von uns bzw. C++ sonder ehr ein Fehler bzw. eine falsche Verwendung von CodeBlocks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1345959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1345959</guid><dc:creator><![CDATA[Pille456]]></dc:creator><pubDate>Thu, 16 Aug 2007 18:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendeklaration in Header, Funktionen in cpp-Datei - wie bekomm ich das zusammen? on Fri, 17 Aug 2007 07:57:16 GMT]]></title><description><![CDATA[<p>na, dann hääte der fehler ja nach meinem ersten post geklärt sein müssen!</p>
<p>zitat:</p>
<blockquote>
<p>du musst die Tisch.cpp ebenfalls kompilieren und linken.</p>
</blockquote>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1346116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1346116</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 17 Aug 2007 07:57:16 GMT</pubDate></item></channel></rss>