<?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[Anfängerproblem: error LNK2001 bei einfacher statischer Variablen]]></title><description><![CDATA[<p>Moin,<br />
Seit Tagen schlage ich mich nun mit einem LNK2001 in c++ herum, nachdem ich für die Uni c++ lernen muss.</p>
<p>Fehler: » A.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: static float A::aVar&quot; (?aVar@A@@2MA)&quot;. «</p>
<p>Eigentlich sehe ich das Problem nicht, aber evtl ist es ja ganz einfach?</p>
<pre><code>//A.h
class A
{
public:
    static float A::aVar;
}

//A.cpp
#include &quot;A.h&quot;

A::A()
{
    A::aVar; //LNK2001
}

A::~A(){}
</code></pre>
<p>Das ganze ist jetzt natürlich entsprechend vereinfacht, da ich hier ein Plugin umzuschreiben versuche, wo schon ne Menge infos drin stehen, die hier aber nix zur Sache tun. static muss aVar sein, weil ich aus einer statischen Funktion darauf zugreifen will. Wenn ich also so auf A::aVar zugreifen will wie oben beschrieben bekomme ich den LNK2001, wenn ich ne Referenz mache ebenfalls und bei nem Pointer meckert der Compiler wegen ner ungültigen Dereferenzierung rum...</p>
<p>Daran, dass aVar nicht initialisiert ist kann es eigentlich auch nicht liegen, da der Versuch zu iitialisieren sowohl in der cpp-Datei (linker error) als auch in der h (error C2864: Nur statische konstante integrale Datenmember können innerhalb einer Klasse initialisiert werden) Fehler wirft...</p>
<p>Ich hab mir schon verschiedene Tutorials/Bücher (z.B. Thinking in c++) angesehen, aber das hat nicht wirklich weiter geholfen und jetzt bin ich langsam verzweifelt...</p>
<p>In Java ist sowas immer so leicht...</p>
<p>Hat da jemand ne Idee, woran der Fehler liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271103/anfängerproblem-error-lnk2001-bei-einfacher-statischer-variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 14:58:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271103.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jul 2010 10:44:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 10:44:13 GMT]]></title><description><![CDATA[<p>Moin,<br />
Seit Tagen schlage ich mich nun mit einem LNK2001 in c++ herum, nachdem ich für die Uni c++ lernen muss.</p>
<p>Fehler: » A.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: static float A::aVar&quot; (?aVar@A@@2MA)&quot;. «</p>
<p>Eigentlich sehe ich das Problem nicht, aber evtl ist es ja ganz einfach?</p>
<pre><code>//A.h
class A
{
public:
    static float A::aVar;
}

//A.cpp
#include &quot;A.h&quot;

A::A()
{
    A::aVar; //LNK2001
}

A::~A(){}
</code></pre>
<p>Das ganze ist jetzt natürlich entsprechend vereinfacht, da ich hier ein Plugin umzuschreiben versuche, wo schon ne Menge infos drin stehen, die hier aber nix zur Sache tun. static muss aVar sein, weil ich aus einer statischen Funktion darauf zugreifen will. Wenn ich also so auf A::aVar zugreifen will wie oben beschrieben bekomme ich den LNK2001, wenn ich ne Referenz mache ebenfalls und bei nem Pointer meckert der Compiler wegen ner ungültigen Dereferenzierung rum...</p>
<p>Daran, dass aVar nicht initialisiert ist kann es eigentlich auch nicht liegen, da der Versuch zu iitialisieren sowohl in der cpp-Datei (linker error) als auch in der h (error C2864: Nur statische konstante integrale Datenmember können innerhalb einer Klasse initialisiert werden) Fehler wirft...</p>
<p>Ich hab mir schon verschiedene Tutorials/Bücher (z.B. Thinking in c++) angesehen, aber das hat nicht wirklich weiter geholfen und jetzt bin ich langsam verzweifelt...</p>
<p>In Java ist sowas immer so leicht...</p>
<p>Hat da jemand ne Idee, woran der Fehler liegen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930505</guid><dc:creator><![CDATA[sefie]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 10:58:42 GMT]]></title><description><![CDATA[<p>huhu,<br />
du hast 3Fehler:</p>
<ol>
<li>
<p>Die Definition einer Klasse wird mit einem &quot;;&quot; beendet.</p>
</li>
<li>
<p>Konstruktur ist nur für objektzugehörige Attribute zu haben, und nicht für klassenzugehörige (statische) Attribute. Nur statische-Methoden können auf statische Attribute zugreifen.</p>
</li>
<li>
<p>Wenn du Methoden außerhalb der Klasse definierst, dann musst du sie davor schon in der Klasse deklarieren.</p>
</li>
</ol>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class A
{
    public:
        static float aVar;
        A();
        ~A();
};

A::A(){}

float A::aVar = 1234;

A::~A(){} 

int main()
{ 
    system(&quot;pause&gt;nul&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1930517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930517</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 23 Jul 2010 10:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 12:26:01 GMT]]></title><description><![CDATA[<p>Schon mal danke für die Antwort, auch wenn sie mich leider nicht wirklich weiter bringt...</p>
<p>Das ; war mein Fehler - vergessen mit abzuschreiben, genauso wie die Deklaration von Konstruktor und Destruktor.</p>
<p>Mein eigentlicher Fehler lag also darin, dass deine Zeile 15 (also die Neudeklaration) gefehlt hatte.</p>
<p>Damit funzt's soweit. Wenn ich das jetzt noch in's große Ganze eingebaut bekomme, dann bist du mein großer Retter...</p>
<p>Das heißt jetzt geht der richtig große Spaß für mich los <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>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930611</guid><dc:creator><![CDATA[sefie]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 12:27:02 GMT]]></title><description><![CDATA[<p>ignoriere die erste Zeile - die hatte ich geschrieben, bevor ich verstanden hatte, wo das Problem lag...</p>
<p>Man sollte genauer lesen, was man schreibt, wenn man nicht editieren kann XD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930614</guid><dc:creator><![CDATA[sefie]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 12:37:35 GMT]]></title><description><![CDATA[<p>sefie schrieb:</p>
<blockquote>
<p>Das ; war mein Fehler - vergessen mit abzuschreiben, genauso wie die Deklaration von Konstruktor und Destruktor.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Niemals Code abschreiben! Immer Copy&amp;Paste anwenden, um genau solche Flüchtigkeitsfehler zu vermeiden, die dann die Hilfesteller auf eine falsche Fährte locken oder zumindest unnötig mit &quot;falschen Fehlern&quot; beschäftigen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930633</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 12:49:45 GMT]]></title><description><![CDATA[<p>sefie schrieb:</p>
<blockquote>
<p>Mein eigentlicher Fehler lag also darin, dass deine Zeile 15 (also die Neudeklaration) gefehlt hatte.</p>
</blockquote>
<p>Verwende bitte die richtige Terminologie.</p>
<pre><code class="language-cpp">class A;  // &lt;-- Deklaration der Klasse A

class A { // &lt;-- Definition  der Klasse A
public:
  static int foo; // &lt;-- Deklaration von A::foo
  int x;
};

int A::foo;       // &lt;-- Definition von A::foo

void bar(A*);     // &lt;-- Deklaration einer Funktion

void bar(A* a) {  // &lt;-- Definition einer Funktion
  a-&gt;x=99;
}
</code></pre>
<p>Stell sicher, dass Du den Unterschied zwischen Deklaration und Definition kennst.</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930647</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:49:45 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 12:55:53 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<ol start="2">
<li>Konstruktur ist nur für objektzugehörige Attribute zu haben, und nicht für klassenzugehörige (statische) Attribute. Nur statische-Methoden können auf statische Attribute zugreifen.</li>
</ol>
</blockquote>
<p>Das stimmt nicht. Die Aussage muss lauten:</p>
<p>Statische Methoden können nur auf statische Member zugreifen.</p>
<p>Nichtstatische Member können sowohl auf statische als auch auf nicht-statische Member zufreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930654</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 23 Jul 2010 12:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 13:10:05 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Nichtstatische Member können sowohl auf statische als auch auf nicht-statische Member zufreifen.</p>
</blockquote>
<p>Genau das war auch meine ursprüngliche Intention.<br />
Ich habe nämlich eine dynamische Eingabe (Position einer Cursor-Instanz auf dem Bildschirm) und diese soll einen Render-Prozess beeinflussen, der hauptsächlich über statische Methoden abläuft.</p>
<p>Ich hab's jetzt so gelöst, dass ich die statische Variable in der cpp-Datei deklariere und kurz vor Beginn des Renderprozesses (noch in einer non-static Funktion) mit den neusten Werten des Cursors &quot;von Hand&quot; überschreibe, so dass ich sie dann statisch parat habe. Nicht performant, aber es funzt soweit. Mehr wird von mir nicht erwartet.</p>
<p>Und mir war schon klar, was der Unterschied zwischen Deklaration (Bekanntmachung) und Definition (Implementierung) ist, aber bei Variablen ist das ja schwimmend... Zumindest, wenn man das Initialisieren nicht als Definition wertet.</p>
<p>Auf jeden Fall vielen Dank für eure Hilfe. Ich hab mir darüber buchstäblich Tage lang den Kopf zerbrochen und jetzt kann ich endlich weiter arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930676</guid><dc:creator><![CDATA[sefie]]></dc:creator><pubDate>Fri, 23 Jul 2010 13:10:05 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 14:05:57 GMT]]></title><description><![CDATA[<p>sefie schrieb:</p>
<blockquote>
<p>Fehler: » A.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: static float A::aVar&quot; (?aVar@A@@2MA)&quot;. «</p>
</blockquote>
<p>Ich hoffe meine Frage klingt jetzt nicht zu überheblich, aber es interessiert mich einfach:</p>
<p>Was ist an der Fehlermeldung so schwer zu verstehen?</p>
<p>Es sagt ganz klar, was der Linker vermisst hat. Und wenn ich zwar die Deklaration sehe und ich mir nicht sicher bin, ob das reicht, schaue ich doch als erstes in mein C++-Lehrbuch, um zu schauen, wie statische Membervariablen benutzt werden.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930727</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 23 Jul 2010 14:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 14:22:45 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>sefie schrieb:</p>
<blockquote>
<p>Fehler: » A.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: static float A::aVar&quot; (?aVar@A@@2MA)&quot;. «</p>
</blockquote>
<p>Ich hoffe meine Frage klingt jetzt nicht zu überheblich, aber es interessiert mich einfach:</p>
<p>Was ist an der Fehlermeldung so schwer zu verstehen?</p>
<p>Es sagt ganz klar, was der Linker vermisst hat. Und wenn ich zwar die Deklaration sehe und ich mir nicht sicher bin, ob das reicht, schaue ich doch als erstes in mein C++-Lehrbuch, um zu schauen, wie statische Membervariablen benutzt werden.</p>
<p>mfg Martin</p>
</blockquote>
<p>Das klingt nur begrenzt überheblich, da ich nicht besonders darauf hingewiesen habe, dass ich an sich eigentlich nicht wirklich c++ kann, sondern mit Hilfe eines &quot;Lehrbuches&quot; (oben genanntes &quot;Thinking in c++&quot;) versuche für ein einzelnes Projekt so schnell wie möglich zu Ergebnissen zu kommen. Da der Betreuer der Arbeit auch darauf hinwies, dass Schönheit des Codes oder Performanz keine Bewertungskriterien für mich sind, sondern allein die Funktionalität und das theoretische Gerüst auf dem das Programm aufbaut habe ich jetzt nicht Wochen darauf verwendet, Hello Worlds und so etwas zu programmieren. Das bedeutet natürlich auch, dass ich niemanden habe, der mir direkt beibringen kann, wie c++ im Gegensatz zu Java und AS3 funzt, sondern mir meine Infos zusammensammeln darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930740</guid><dc:creator><![CDATA[sefie]]></dc:creator><pubDate>Fri, 23 Jul 2010 14:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Fri, 23 Jul 2010 15:41:55 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Nichtstatische Member können sowohl auf statische als auch auf nicht-statische Member zufreifen.</p>
</blockquote>
<p><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 fass mal nochmal zusammen, was wir eigentlich sagen wollten. <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>1. Statische Methoden können nur auf statische Attribute zugreifen.<br />
2. Nicht-statische Methoden können sowohl auf nicht-statische als auch auf statische Attribute zugreifen.</p>
<p>sodele :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1930777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1930777</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 23 Jul 2010 15:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerproblem: error LNK2001 bei einfacher statischer Variablen on Mon, 26 Jul 2010 06:58:00 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>sefie schrieb:</p>
<blockquote>
<p>Fehler: » A.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;public: static float A::aVar&quot; (?aVar@A@@2MA)&quot;. «</p>
</blockquote>
<p>Ich hoffe meine Frage klingt jetzt nicht zu überheblich, aber es interessiert mich einfach:</p>
<p>Was ist an der Fehlermeldung so schwer zu verstehen?</p>
<p>Es sagt ganz klar, was der Linker vermisst hat. Und wenn ich zwar die Deklaration sehe und ich mir nicht sicher bin, ob das reicht, schaue ich doch als erstes in mein C++-Lehrbuch, um zu schauen, wie statische Membervariablen benutzt werden.</p>
<p>mfg Martin</p>
</blockquote>
<p>Was ist so schwer daran zu verstehen, dass Anfänger nicht gleich jede Fehlermeldung verstehen? Erzähl mir nicht, du hast angefangen zu programmieren und gleich jede Meldung, die der Compiler ausgespuckt hat, hundertprozentig verstanden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1931763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1931763</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 26 Jul 2010 06:58:00 GMT</pubDate></item></channel></rss>