<?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[static char* fälschlicherweise als int* interpretiert]]></title><description><![CDATA[<p>Hi!<br />
Verwende Visual Studio 2005. In meinem Programm hat bis jetzt alles gut funktioniert.</p>
<p>Hab die Vorgabe, in einer neuen Klasse (ColorSpaces) eine static Memberfunktion zu erzeugen, die einen Buffer von der Klasse (MSImage) erhält, diesen manipuliert und zurückgibt.</p>
<p>In der Klasse ColorSpaces habe ich zb folgende Funktion:</p>
<pre><code class="language-cpp">static char* calculateLab(MSImage* image);
</code></pre>
<p>Übergabe sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">MSImage msimage;
ColorSpaces::calculateLab(&amp;msimage); // (*
</code></pre>
<p>(* warum wird calculateLab als</p>
<pre><code class="language-cpp">int* ColorSpaces::calculateLab(void)
</code></pre>
<p>interpretiert und nicht wie die Definition der Memberfunktion?</p>
<p>Und warum bekomm ich folgende Fehlermeldung:</p>
<pre><code class="language-cpp">error LNK2001: 
unresolved external symbol &quot;public: static char * __cdecl ColorSpaces::calculateLab(class MSImage *)&quot; 
(?calculateLab@ColorSpaces@@SAPADPAVMSImage@@@Z)
</code></pre>
<p>Headers sind inkludiert, Libraries sind eingebunden.<br />
Wär super, wenn mir jemand weiterhelfen könnte.</p>
<p>Danke!<br />
Adamn</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192293/static-char-fälschlicherweise-als-int-interpretiert</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:01:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192293.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Sep 2007 15:09:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Wed, 12 Sep 2007 15:23:06 GMT]]></title><description><![CDATA[<p>Hi!<br />
Verwende Visual Studio 2005. In meinem Programm hat bis jetzt alles gut funktioniert.</p>
<p>Hab die Vorgabe, in einer neuen Klasse (ColorSpaces) eine static Memberfunktion zu erzeugen, die einen Buffer von der Klasse (MSImage) erhält, diesen manipuliert und zurückgibt.</p>
<p>In der Klasse ColorSpaces habe ich zb folgende Funktion:</p>
<pre><code class="language-cpp">static char* calculateLab(MSImage* image);
</code></pre>
<p>Übergabe sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">MSImage msimage;
ColorSpaces::calculateLab(&amp;msimage); // (*
</code></pre>
<p>(* warum wird calculateLab als</p>
<pre><code class="language-cpp">int* ColorSpaces::calculateLab(void)
</code></pre>
<p>interpretiert und nicht wie die Definition der Memberfunktion?</p>
<p>Und warum bekomm ich folgende Fehlermeldung:</p>
<pre><code class="language-cpp">error LNK2001: 
unresolved external symbol &quot;public: static char * __cdecl ColorSpaces::calculateLab(class MSImage *)&quot; 
(?calculateLab@ColorSpaces@@SAPADPAVMSImage@@@Z)
</code></pre>
<p>Headers sind inkludiert, Libraries sind eingebunden.<br />
Wär super, wenn mir jemand weiterhelfen könnte.</p>
<p>Danke!<br />
Adamn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364099</guid><dc:creator><![CDATA[Adamn]]></dc:creator><pubDate>Wed, 12 Sep 2007 15:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Wed, 12 Sep 2007 15:28:09 GMT]]></title><description><![CDATA[<p>ich glaub du musst noch etwas mehr code zeigen. Was meinst du mit als int* ... interpretiert? Kompilierfehler gibts ja so weit ich seh nciht.</p>
<p>Zeit mal deine Klasse, also definition mit der deklaration der methode, andere kann man ja aussparen. Und zeige genau den Aufruf mit umgebendem code und dann zeig noch die ersten und letzten paar zeilen von CalculateLab</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364111</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 12 Sep 2007 15:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Wed, 12 Sep 2007 15:33:03 GMT]]></title><description><![CDATA[<p>Du hast die Definition der Funktion vergessen oder falsch gemacht.<br />
Das muss in der .cpp Datei stehen.</p>
<pre><code class="language-cpp">char* ColorSpaces::calculateLab(MSImage* image)
{
//meine definition
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1364112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364112</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Wed, 12 Sep 2007 15:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Wed, 12 Sep 2007 16:38:54 GMT]]></title><description><![CDATA[<p>templäd schrieb:</p>
<blockquote>
<p>Du hast die Definition der Funktion vergessen oder falsch gemacht.<br />
Das muss in der .cpp Datei stehen.</p>
<pre><code class="language-cpp">char* ColorSpaces::calculateLab(MSImage* image)
{
//meine definition
return 0;
}
</code></pre>
</blockquote>
<p>Genau das steht dort drinnen. Das Problem besteht jedoch immer noch!</p>
<p>Klasse ColorSpaces sieht so aus:</p>
<pre><code class="language-cpp">class ColorSpaces
{
public:
	ColorSpaces();
	virtual ~ColorSpaces(void);

	// returns a buffer, where the L,a,b values of a given MSImage are stored
	static char* calculateLab(MSImage* image);
	static char* calculateLuv(MSImage* image);
	static char* calculateRG(MSImage* image);

};
</code></pre>
<p>In ColorSpaces.cpp passiert noch nicht viel:</p>
<pre><code class="language-cpp">ColorSpaces::ColorSpaces()
{
}

// ----------------------------------------------------------------------------
ColorSpaces::~ColorSpaces(void)
{
}

char* ColorSpaces::calculateLab(MSImage* image)
{
//	cout &lt;&lt; image-&gt;data3D &lt;&lt; endl;
}

char* ColorSpaces::calculateLuv(MSImage* image)
{

}

char* ColorSpaces::calculateRG(MSImage* image)
{

}
</code></pre>
<p>Maxi schrieb:</p>
<blockquote>
<p>Was meinst du mit als int* ... interpretiert?</p>
</blockquote>
<p>In Visual Studio gibts die nette Funktion, wenn man über zb eine Funktion anfokusiert, wird dessen Signatur gezeigt. Wenn ich zb. in main() schreibe:</p>
<pre><code class="language-cpp">ColorSpaces::calculateLab(&amp;msimage);
</code></pre>
<p>und über calculateLab fahre, dann steht</p>
<pre><code class="language-cpp">int* ColorSpaces::calculateLab(void)
</code></pre>
<p>und nicht</p>
<pre><code class="language-cpp">char* ColorSpaces::calculateLuv(MSImage* image)
</code></pre>
<p>In main wird aufgerufen:</p>
<pre><code class="language-cpp">MSImage msimage(str,false);
	// adamn: ascii false, colorspace RGB

	ColorSpaces::calculateLab(&amp;msimage);
</code></pre>
<p>File ist hier einfach der Filename und false eine lesespezifische Eigenheit, umd das File auslesen zu können. MSImage speichert die Bilddaten dann in</p>
<pre><code class="language-cpp">unsigned char*** data3D;
</code></pre>
<p>Den ganzen Code zu posten wär einfach zuviel und unübersichtlich. Ich hab gelesen, dass static members nicht nur definiert, sondern auch deklariert werden müssen, um den Compiler zu beruhigen. Compiler meint dann nur: member function redeclaration not allowed.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364147</guid><dc:creator><![CDATA[Adamn]]></dc:creator><pubDate>Wed, 12 Sep 2007 16:38:54 GMT</pubDate></item><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Wed, 12 Sep 2007 22:53:11 GMT]]></title><description><![CDATA[<p>ja, static member müssen noch instanziert werden, static functions nicht.</p>
<p>Das das visual studio das so anzeigt is sicher einer der vielen bugs im VS. Aber kompilieren tut er ja, oder? Nur der Linker spinnt?</p>
<p>Hast du die Datei zum Projekt hinzugefügt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364344</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 12 Sep 2007 22:53:11 GMT</pubDate></item><item><title><![CDATA[Reply to static char* fälschlicherweise als int* interpretiert on Thu, 13 Sep 2007 15:39:27 GMT]]></title><description><![CDATA[<p>Maxi schrieb:</p>
<blockquote>
<p>ja, static member müssen noch instanziert werden, static functions nicht.</p>
<p>Das das visual studio das so anzeigt is sicher einer der vielen bugs im VS. Aber kompilieren tut er ja, oder? Nur der Linker spinnt?</p>
<p>Hast du die Datei zum Projekt hinzugefügt?</p>
</blockquote>
<p>Die Rätsels Lösung:</p>
<pre><code>class [b]__declspec(dllexport)[/b] ColorSpaces
</code></pre>
<p>in der ColorSpaces.h ergänzen <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/1364381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364381</guid><dc:creator><![CDATA[Adamn]]></dc:creator><pubDate>Thu, 13 Sep 2007 15:39:27 GMT</pubDate></item></channel></rss>