<?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[Linker fehler zwischen zwei Klassen]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich grad folgendes Problem, ich habe eine etwas größere c++ Klasse programmiert nun bin ich soweit fertig und wollte das ganze etwas Objektorientierter machen und einige Sachen in eigenen Klassen verstauen.</p>
<p>Dies hab ich dann auch getan, nur leider hab ich jetzt einige Linker fehler und langsamm verzweifel ich dran weil ich nicht weiß was ich falsch gemacht hab.</p>
<p>Hier die Fehler:</p>
<pre><code>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct Odestuff::MyObject * Odestuff::Object&quot; (?Object@Odestuff@@2PAUMyObject@1@A)&quot; in Funktion &quot;&quot;void __cdecl drawEverything(void)&quot; (?drawEverything@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static int const Odestuff::objsCount&quot; (?objsCount@Odestuff@@2HB)&quot; in Funktion &quot;&quot;void __cdecl drawEverything(void)&quot; (?drawEverything@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxJointGroup * Odestuff::contactgroup&quot; (?contactgroup@Odestuff@@2PAUdxJointGroup@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxWorld * Odestuff::world&quot; (?world@Odestuff@@2PAUdxWorld@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static void __cdecl Odestuff::nearCallback(void *,struct dxGeom *,struct dxGeom *)&quot; (?nearCallback@Odestuff@@SAXPAXPAUdxGeom@@1@Z)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxSpace * Odestuff::Space&quot; (?Space@Odestuff@@2PAUdxSpace@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static void __cdecl Odestuff::createObjects(void)&quot; (?createObjects@Odestuff@@SAXXZ)&quot; in Funktion &quot;&quot;int __cdecl InitGL(void)&quot; (?InitGL@@YAHXZ)&quot;.
C:\Visual Studio 2005\Projects\testode2\Debug\testode2.exe : fatal error LNK1120: 7 nicht aufgelöste externe Verweise.
</code></pre>
<p>Nun ich hab eine Klasse erstellt und dort einige Funktionen und Variablen hinverschoben. Dann den Header gelinkt zu der Hauptklasse includet und den alten code durch Verweise auf die Klasse geändert. Die ganzen nicht aufgelösten Symbole befinden sich in meinen &quot;alten&quot; Code.<br />
Die neue Klasse inizialisier ich über einen standart Kostruktor.</p>
<p>Ungefähr so:</p>
<pre><code class="language-cpp">#include Newclass.h

...

Newclass myclass;

...

Void funktion(Newclass::variable1 var2){
myclass.varialbe2 = var2;
myclass.funktion1();

usw..

}
</code></pre>
<p>Leider klappt das nicht so wie ich will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Muß ich mir wie in Java eine neue instanz der Klasse erzeugen (per new) und dann mit den &quot;-&gt;&quot; Operator darauf zugreifen ?</p>
<p>Hoffe jemand kann mir da helfen, bin bei dieser ganzen linker geschichte noch nicht so ganz fitt, da ich eher aus dem Java Bereich komme <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/topic/180716/linker-fehler-zwischen-zwei-klassen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 22:34:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180716.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 May 2007 16:51:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linker fehler zwischen zwei Klassen on Sat, 05 May 2007 16:51:49 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich grad folgendes Problem, ich habe eine etwas größere c++ Klasse programmiert nun bin ich soweit fertig und wollte das ganze etwas Objektorientierter machen und einige Sachen in eigenen Klassen verstauen.</p>
<p>Dies hab ich dann auch getan, nur leider hab ich jetzt einige Linker fehler und langsamm verzweifel ich dran weil ich nicht weiß was ich falsch gemacht hab.</p>
<p>Hier die Fehler:</p>
<pre><code>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct Odestuff::MyObject * Odestuff::Object&quot; (?Object@Odestuff@@2PAUMyObject@1@A)&quot; in Funktion &quot;&quot;void __cdecl drawEverything(void)&quot; (?drawEverything@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static int const Odestuff::objsCount&quot; (?objsCount@Odestuff@@2HB)&quot; in Funktion &quot;&quot;void __cdecl drawEverything(void)&quot; (?drawEverything@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxJointGroup * Odestuff::contactgroup&quot; (?contactgroup@Odestuff@@2PAUdxJointGroup@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxWorld * Odestuff::world&quot; (?world@Odestuff@@2PAUdxWorld@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static void __cdecl Odestuff::nearCallback(void *,struct dxGeom *,struct dxGeom *)&quot; (?nearCallback@Odestuff@@SAXPAXPAUdxGeom@@1@Z)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static struct dxSpace * Odestuff::Space&quot; (?Space@Odestuff@@2PAUdxSpace@@A)&quot; in Funktion &quot;&quot;void __cdecl renderScene(void)&quot; (?renderScene@@YAXXZ)&quot;.
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: static void __cdecl Odestuff::createObjects(void)&quot; (?createObjects@Odestuff@@SAXXZ)&quot; in Funktion &quot;&quot;int __cdecl InitGL(void)&quot; (?InitGL@@YAHXZ)&quot;.
C:\Visual Studio 2005\Projects\testode2\Debug\testode2.exe : fatal error LNK1120: 7 nicht aufgelöste externe Verweise.
</code></pre>
<p>Nun ich hab eine Klasse erstellt und dort einige Funktionen und Variablen hinverschoben. Dann den Header gelinkt zu der Hauptklasse includet und den alten code durch Verweise auf die Klasse geändert. Die ganzen nicht aufgelösten Symbole befinden sich in meinen &quot;alten&quot; Code.<br />
Die neue Klasse inizialisier ich über einen standart Kostruktor.</p>
<p>Ungefähr so:</p>
<pre><code class="language-cpp">#include Newclass.h

...

Newclass myclass;

...

Void funktion(Newclass::variable1 var2){
myclass.varialbe2 = var2;
myclass.funktion1();

usw..

}
</code></pre>
<p>Leider klappt das nicht so wie ich will <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Muß ich mir wie in Java eine neue instanz der Klasse erzeugen (per new) und dann mit den &quot;-&gt;&quot; Operator darauf zugreifen ?</p>
<p>Hoffe jemand kann mir da helfen, bin bei dieser ganzen linker geschichte noch nicht so ganz fitt, da ich eher aus dem Java Bereich komme <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/1279384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279384</guid><dc:creator><![CDATA[Mari2k]]></dc:creator><pubDate>Sat, 05 May 2007 16:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to Linker fehler zwischen zwei Klassen on Sun, 06 May 2007 16:48:55 GMT]]></title><description><![CDATA[<p>Also der -&gt; Operator dient dazu auf Elemente einer Klasse zuzugreifen anhand eines Zeigers auf eine Instanz der Klasse.( OhMan derber Satz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> )<br />
Bsp.</p>
<pre><code class="language-cpp">CMyClass *ptrMyClass = NULL;
ptrMyClass = new CMyClass;

ptrMyClass-&gt;i/*irgend ein element von MyClass*/;
</code></pre>
<p>bei normalen instanzen verwendet man den . Operator<br />
Bsp.</p>
<pre><code class="language-cpp">CMyClass MyClass;

MyClass./*irgend ein element von MyClass*/;
</code></pre>
<p>mit dem :: Operator kann man auf Elemente einer Klasse (Klasse nicht instanz) direkt zugreifen ohne eine Instanz erzeugen zu müssen.</p>
<p>Allerdings weiss ich nicht was man davon hat und wozu der verwendet wird, ausser zur definition von Memberfunktionen ausserhalb der Klassendeklaration <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>
<p>Ich weiss zwar nicht wie man dass bei Java so macht aber ich denke von Klassen sollte man immer Instanzen anfertigen, denn erst wenn aus einer Klasse, Objekte werden kann man die wahren vorzuge der Objektorientierten Programmierung ausnutzen. Anders ausgedrückt: ohne Objekte keine OOP <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>Ich hoffe ich hab dir irgendwie geholfen und nicht allzuviel Sachen erzählt die du sowieso schon kennst.</p>
<p>Und lass dich von Linker Fehlern nicht ärgern die machen mir auch Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279788</guid><dc:creator><![CDATA[h2o202]]></dc:creator><pubDate>Sun, 06 May 2007 16:48:55 GMT</pubDate></item></channel></rss>