<?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 unklar]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Linker Problem. Ich habe minimal eine Klasse Network erstellt und will diese in meiner main Funktion nutzen.</p>
<p>Meine main Funktion:</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;Network.h&quot;

using namespace std;

int main(int argc, char** argv) {

Network network; // Declare an object network with type Network
cout &lt;&lt; &quot;Neurons: &quot; &lt;&lt; network._AdSize &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Meine Klasse Network:</p>
<p>Die Network.h Datei:</p>
<pre><code>#ifndef NETWORK_H
#define NETWORK_H

// A class for the network topology
class Network {
  public:
   //Constructor
   Network(); 

   // Number of Neurons
   static int _AdSize;
};

#endif  // NETWORK_H
</code></pre>
<p>Und die Network.cpp Datei</p>
<pre><code>#include &quot;Network.h&quot;

// Constructor for the Network class.
Network::Network() {
  _AdSize = 8;
}
</code></pre>
<p>Ich erhalte bei dem Befehl</p>
<pre><code>g++-5 -std=c++14 -Wall -g Main.cpp -o Programm

undefined reference to `Network::Network()
undefined reference to `Network::_AdSize'
collect2: error: ld returned 1 exit status
</code></pre>
<p>In der Network.cpp ist der Header inkludiert und in der main Funktion auch. Wo ist der Fehler?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337850/linker-fehler-unklar</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 15:25:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337850.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 May 2016 14:08:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 14:08:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Linker Problem. Ich habe minimal eine Klasse Network erstellt und will diese in meiner main Funktion nutzen.</p>
<p>Meine main Funktion:</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;Network.h&quot;

using namespace std;

int main(int argc, char** argv) {

Network network; // Declare an object network with type Network
cout &lt;&lt; &quot;Neurons: &quot; &lt;&lt; network._AdSize &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Meine Klasse Network:</p>
<p>Die Network.h Datei:</p>
<pre><code>#ifndef NETWORK_H
#define NETWORK_H

// A class for the network topology
class Network {
  public:
   //Constructor
   Network(); 

   // Number of Neurons
   static int _AdSize;
};

#endif  // NETWORK_H
</code></pre>
<p>Und die Network.cpp Datei</p>
<pre><code>#include &quot;Network.h&quot;

// Constructor for the Network class.
Network::Network() {
  _AdSize = 8;
}
</code></pre>
<p>Ich erhalte bei dem Befehl</p>
<pre><code>g++-5 -std=c++14 -Wall -g Main.cpp -o Programm

undefined reference to `Network::Network()
undefined reference to `Network::_AdSize'
collect2: error: ld returned 1 exit status
</code></pre>
<p>In der Network.cpp ist der Header inkludiert und in der main Funktion auch. Wo ist der Fehler?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494891</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Wed, 04 May 2016 14:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 14:18:35 GMT]]></title><description><![CDATA[<p>Du musst den statischen Member auch noch definieren und damit initialisieren (im cpp-File). Damit ist die Zeile im Konstruktor überflüssig, weil sie vermutlich nicht das macht, was du erwartest.</p>
<pre><code>int Network::_AdSize = 8; 

Network::Network() { 
}
</code></pre>
<p>Vermutlich sollte dieser Member auch <code>const</code> sein. Ausserdem sind Member-Bezeichner die mit Underscore und Grossbuchstaben beginnen problematisch, weil sie für den Compiler reserviert sind (etwas salopp ausgedrückt).</p>
<p>// Edit</p>
<p>Oder aber der Member sollte nicht <code>static</code> sein und du hast das nur gemacht, weil dir nicht bekannt war, was es genau bedeutet oder dir nicht klar war, wie du anschliessend darauf zugreifen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494893</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 04 May 2016 14:18:35 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 14:17:08 GMT]]></title><description><![CDATA[<p>Warum static, wenn die Variable im Konstruktor gesetzt wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494894</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 04 May 2016 14:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 14:32:16 GMT]]></title><description><![CDATA[<p>Der Fehler</p>
<pre><code>undefined reference to `Network::Network()'
</code></pre>
<p>bleibt leider trotzdem <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494897</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Wed, 04 May 2016 14:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 14:57:35 GMT]]></title><description><![CDATA[<p>cpp_Jungspund schrieb:</p>
<blockquote>
<p>Der Fehler</p>
<pre><code>undefined reference to `Network::Network()'
</code></pre>
<p>bleibt leider trotzdem <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="😞"
    /></p>
</blockquote>
<p>Um diesen Fehler zu korrigieren musst du noch die <code>Network.cpp</code> Datei mitkompilieren.</p>
<p>// Edit</p>
<p><code>g++-5 -std=c++14 -Wall -g Main.cpp Network.cpp -o Programm</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494902</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 04 May 2016 14:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 18:07:27 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Estmal Danke, es läuft. Eine Fragen habe ich dazu noch:</p>
<p>Ich habe nun in der header Datei der Klasse Network</p>
<pre><code>const int _AdSize = 4;
</code></pre>
<p>gesetzt und in der cpp Datei zu Network den Konstruktor leer gelassen.</p>
<p>In meinem Skript steht, dass man Membervariablen in der header Datei nicht einen Wert zuweisen soll, sondern die Zuweisung der Werte über den Konstruktor entsteht. Das ist ja nun im Widerspruch zu dem was ich gemacht habe. Aber es läuft... ist es trotzdem okay obige Zeile in die header Datei geschrieben zu haben? Was ist denn da guter Code, Zuweisung im Konstruktor oder in der Klasse und warum?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494925</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Wed, 04 May 2016 18:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 18:09:03 GMT]]></title><description><![CDATA[<p>Man soll nicht oder man kann nicht? Begründung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494929</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 04 May 2016 18:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 18:09:58 GMT]]></title><description><![CDATA[<p>Hi manni66</p>
<p>Das steht das man es nicht soll. Leider ohne weitere Begründung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494930</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Wed, 04 May 2016 18:09:58 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Wed, 04 May 2016 18:21:37 GMT]]></title><description><![CDATA[<p>Eine Konstante per Zuweisung im Konstruktor zu initialisieren geht nicht. Besser ist unabhängig davon die Initialisierungsliste des Konstruktors. Die Begründung für das &quot;soll nicht&quot; müsste der Skripautor schon liefern.</p>
<p>Dein Programm ist nach diesem Skript aber nicht korrekt im Sinne der selbst aufgestellten Regeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2494933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2494933</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 04 May 2016 18:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Fri, 06 May 2016 09:17:38 GMT]]></title><description><![CDATA[<p>Nach etwas Recherche bin ich auf diesen Beitrag hier gekommen:</p>
<p><a href="http://www.cplusplus.com/forum/beginner/166090/#msg836782" rel="nofollow">http://www.cplusplus.com/forum/beginner/166090/#msg836782</a></p>
<p>Jetzt weist er die Variable in der Main.cpp zu. Jetzt bin ich doch verwirrt.</p>
<p>Geht es da evtl. darum wann der Schreiber des Codes bestimmen möchte wann Speicher zugewiesen wird? Beim Konstuktor bekommt der Compiler ja erst die Anweisung Bytes zu reservieren, wenn er zu Laufzeit aufgerufen wird und gibt sie später mit dem Destruktor wieder frei und bei einer Initialisierung von Anfang an ist der Speicher fest belegt. Geht es darum?</p>
<p>Und wieso wird in dem Post oben in der main Datei und nicht in dem Header initialisiert?</p>
<p>Danke und Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2495044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2495044</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Fri, 06 May 2016 09:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Fri, 06 May 2016 14:11:07 GMT]]></title><description><![CDATA[<p>Es ist nicht klar, was Du eigentlich möchtest. Kann es sein, dass in dem Skript statt Zuweisung vielleicht Initialisierung steht? Wie statische Variablen, also welche, die für eine Klasse gelten, initialisiert werden, wird oben schon gezeigt. In dem von Dir gezeigten Link geht es aber um eine <strong>globale</strong> Variable. Wenn Du eine Größe brauchst, die konstant für ein Objekt sein soll (aber verschieden für verschiedenen Objekte), dann musst Du sie im Konstruktor initialisieren, und zwar in der initialisierungsliste nach :, nicht im Code-Block. Soll sie aber für alle Objekte gelten: siehe oben.<br />
Oder willst Du eine globale Konstante? Dann kannst Du in der Header-Datei schreiben:</p>
<pre><code>constexpr int _AdSize =4;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2495054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2495054</guid><dc:creator><![CDATA[vatertag_gelaufen]]></dc:creator><pubDate>Fri, 06 May 2016 14:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Linker Fehler unklar on Fri, 06 May 2016 14:41:04 GMT]]></title><description><![CDATA[<p>Diesen Beitrag habe ich gebraucht. Danke &quot;vatertag_gelaufen&quot; <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/2495057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2495057</guid><dc:creator><![CDATA[cpp_Jungspund]]></dc:creator><pubDate>Fri, 06 May 2016 14:41:04 GMT</pubDate></item></channel></rss>