<?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[OOP Problem]]></title><description><![CDATA[<p>Hallo<br />
ich steige gerade von c auf c++ um und hab jetzt versucht mir die Objektorientierung näher anzusehen. Um zu testen wie man mit klassen und objekte umgeht hab ich mir mal kurz was gebastelt was mi aber nen Compilerfehler ausspuckt. Bin am verzweifeln.<br />
Ihr werdet den Fehler bestimmt gleich sehen aber ich hab da grad kein Blick für.<br />
Hier der Code:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;funktion.h&quot;

using namespace std;

int main(void)
{
	funktion funk;
	cout&lt;&lt;&quot;dieses Programm: &quot;;
	funk.print();
	return 0;
}
</code></pre>
<p>funktion.h</p>
<pre><code class="language-cpp">class funktion
{
	public: void print(void);
};
</code></pre>
<p>funktion.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

void print(void)
{
	cout&lt;&lt;&quot;laeuft&quot;&lt;&lt;endl;
}
</code></pre>
<p>Das ist der Fehler den ich ständig bekomme:<br />
main.cpp:(.text+0x88): undefined reference to `funktion::print()'</p>
<p>Compilieren tue ich das ganze mittels g++:<br />
g++ -o main main.cpp funktion.cpp</p>
<p>Irgendetwas übersehe ich.<br />
Danke für Hilfe. Dreh fast durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230958/oop-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 00:58:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230958.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Jan 2009 17:06:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:06:35 GMT]]></title><description><![CDATA[<p>Hallo<br />
ich steige gerade von c auf c++ um und hab jetzt versucht mir die Objektorientierung näher anzusehen. Um zu testen wie man mit klassen und objekte umgeht hab ich mir mal kurz was gebastelt was mi aber nen Compilerfehler ausspuckt. Bin am verzweifeln.<br />
Ihr werdet den Fehler bestimmt gleich sehen aber ich hab da grad kein Blick für.<br />
Hier der Code:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;funktion.h&quot;

using namespace std;

int main(void)
{
	funktion funk;
	cout&lt;&lt;&quot;dieses Programm: &quot;;
	funk.print();
	return 0;
}
</code></pre>
<p>funktion.h</p>
<pre><code class="language-cpp">class funktion
{
	public: void print(void);
};
</code></pre>
<p>funktion.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

void print(void)
{
	cout&lt;&lt;&quot;laeuft&quot;&lt;&lt;endl;
}
</code></pre>
<p>Das ist der Fehler den ich ständig bekomme:<br />
main.cpp:(.text+0x88): undefined reference to `funktion::print()'</p>
<p>Compilieren tue ich das ganze mittels g++:<br />
g++ -o main main.cpp funktion.cpp</p>
<p>Irgendetwas übersehe ich.<br />
Danke für Hilfe. Dreh fast durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639374</guid><dc:creator><![CDATA[Zpider]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:06:35 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:15:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void funktion::print(void)
{
    cout&lt;&lt;&quot;laeuft&quot;&lt;&lt;endl;
}
</code></pre>
<p><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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639383</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:15:40 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:25:15 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort<br />
aber immernoch fehler:</p>
<p>funktion.cpp:5: Fehler: »funktion« wurde nicht deklariert</p>
<p>Muss ich funktion.h noch in funktion.cpp includieren??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639389</guid><dc:creator><![CDATA[Zpider]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:30:14 GMT]]></title><description><![CDATA[<p>Ok Danke hab zusatzlich noch funktion.h in funktion.cpp includiert<br />
Und jetzt nix Fehler mehr und das Programm sagt:<br />
dieses Programm: läuft</p>
<p><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="🙂"
    /></p>
<p>Danke nochmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639394</guid><dc:creator><![CDATA[Zpider]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:34:02 GMT]]></title><description><![CDATA[<p>in C++ ist es eher unüblich <code>void</code> in die Parameter-Liste zu schreiben - wird vielerorts auch als schlechter Stil angesehen...</p>
<p>außerdem ist es denke ich auch net sonderlich intuitiv ne klassen &quot;funktion&quot; zu nennen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>und die include-guards in der header-Datei hast du nur nicht mitgepostet?!</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639397</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 17:40:57 GMT]]></title><description><![CDATA[<p>Ok danke.<br />
Aber wie gesagt war nurmal n kurzer test um mir die funktion von klassen näher zu bringen.<br />
Also in der header datei steht wirklich nix anderes drin als das was ich gepostet hab.<br />
Was sollte denn da noch rein??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639400</guid><dc:creator><![CDATA[Zpider]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:40:57 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:14:55 GMT]]></title><description><![CDATA[<p>google mal nach &quot;include-guards&quot;</p>
<p>als kurze zusammenfassung:</p>
<pre><code class="language-cpp">#infdef EINDEUTIGER_BEZEICHNER
#define EINDEUTIGER_BEZEICHNER

/*klassen/funktionen/... deklarieren*/

#endif //#ifndef EINDEUTIGER_BEZEICHNER
</code></pre>
<p>mehrere IDEs stellen auch ein <code>#pragma once</code> bereit - das würde man dann so nutzen:</p>
<p>irgend nen header den man überall einbindet sollte das enthalten:</p>
<pre><code class="language-cpp">#if defined _MSC_VER
	#if _MSC_VER &gt;= 1020
		#define PRAGMA_ONCE_ENABLED
	#endif
#elif defined __GNUC__
	#ifndef PRAGMA_ONCE_ENABLED
		#if __GNUC__ &gt; 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ &gt;= 4)
			#define PRAGMA_ONCE_ENABLED
		#endif
	#endif
#endif
</code></pre>
<p>und dann kann man den header entsprechend so schreiben:</p>
<pre><code class="language-cpp">#if PRAGMA_ONCE_ENABLED
   #pragma once
#endif

#ifndef EINDEUTIGER_BEZEICHNER
#define EINDEUTIGER_BEZEICHNER

/*...*/

#endif //#ifndef EINDEUTIGER_BEZEICHNER
</code></pre>
<p><code>#pragma once</code> hat ein paar Vorteile (Datei wird nur ein einziges mal geöffnet und geparst - mit nur include-guards würde sie trotzdem jedes mal geöffnet werden wenn sie included wurde und erst beim parsen wird gemerkt, dass sie nicht gebraucht wird). Was den Compilier-Vorgang natürlich beschleunigt (wenn man #pragma once verwendet ^^).</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639427</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:18:43 GMT]]></title><description><![CDATA[<p>Was würde denn passieren wenn #pragma once ohne makro dastehen würde? Außerdem darf #pragma once auch ruhig nach dem Includeguard kommen! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639429</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:25:50 GMT]]></title><description><![CDATA[<p>ok jetzt bin ich schlauer <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="🙂"
    /><br />
vielen Dank<br />
Werd gleich mal n bisschen damit rumprobieren<br />
Wünsch euch noch nen schönen Tag <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639437</guid><dc:creator><![CDATA[Zpider]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:29:10 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Was würde denn passieren wenn #pragma once ohne makro dastehen würde?</p>
</blockquote>
<p>Hmm... Ich hab keine IDE hier, die <code>#pragma once</code> nicht versteht - aber vermutlich wird eine Fehlermeldung á la ungültige Präprozessor-Direktive kommen. Bei GCC weiß ich aber z.Bsp., dass er <code>#pragma once</code> geschluckt hat, als er es noch nicht kannte und einfach nur ignoriert hat ^^</p>
<p>Ich jedenfalls würde keinen Code schreiben wollen der mit anderen IDEs evtl nicht funktioniert - und wenn der jenige dann x Dateien verändern muss ists für den au ne so doll ^^ lieber schreib ich dann immer 3 anstatt einer Zeile ^^</p>
<p>David_pb schrieb:</p>
<blockquote>
<p>Außerdem darf #pragma once auch ruhig nach dem Includeguard kommen! <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="🙂"
    /></p>
</blockquote>
<p>Klar darf es das - es darf auch als allerletztes in der Datei stehen... Je nach dem, was man bevorzugt...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639441</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:34:40 GMT]]></title><description><![CDATA[<p>Ich meine im Standard steht, dass eine nicht erkannte #pragma Direktive ignoriert werden soll. Wenn die IDE sich also mehr oder weniger konform verhält dürfte das also eigentlich keine Probleme geben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639445</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:34:33 GMT]]></title><description><![CDATA[<p>ok, sie macht keinen fehler.<br />
aber die warning nervt ungemein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639448</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 18:35:42 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>ok, sie macht keinen fehler.<br />
aber die warning nervt ungemein.</p>
</blockquote>
<p>welche ide haste denn jz ausgekramt? ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639449</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 04 Jan 2009 22:44:55 GMT]]></title><description><![CDATA[<p>Wenn man sich schon Gedanken wegen der Präprozessorgeschwindigkeit macht, sollte man auch die Performance der <code>#if</code> -Abfrage bedenken... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1639535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639535</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 04 Jan 2009 22:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Mon, 05 Jan 2009 02:24:52 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wenn man sich schon Gedanken wegen der Präprozessorgeschwindigkeit macht, sollte man auch die Performance der <code>#if</code> -Abfrage bedenken... <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>sehr qualifizierter beitrag... außerdem hab ich mal gehört, dass ram und cpu um weiten schneller sind als festplatten... <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="🙄"
    /> deshalb wird es wohl ziemlich schwer so viele <code>#if</code> <code>s zu verwenden, dass der Vorteil von</code>#pragma once` wieder verschwindet...<br />
btw ging es auch net um die geschwindigkeit des präprozessors - sondern um die dauer des compilierens <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639601</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 05 Jan 2009 02:24:52 GMT</pubDate></item></channel></rss>