<?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[Fehlermeldung nach erstellen von klassen]]></title><description><![CDATA[<p>Hi, ich hoffe mir kann jemand weiter helfen</p>
<p>Ich hab eine klasse erstellt, die folgende methoden enthält:</p>
<pre><code class="language-cpp">void* __stdcall BPMErkennung::dspCallback(void* originalbuffer,void* newbuffer, int length, void* param)
{
        if(BPMDetection != 0)
        {
               for(int i=0; i&lt; length - 1;i++)
                       BPM_AddSample(BPMDetection, (float)BPMErkennung::getShortIntFromArray(reinterpret_cast&lt;short*&gt;(originalbuffer), i * 2));
       }
        return newbuffer;
}

void BPMErkennung::DSPInit(void)
{

        FSOUND_DSPUNIT *dsp;

        dsp = FSOUND_DSP_Create(dspCallback, FSOUND_DSP_DEFAULTPRIORITY_USER + 10, 0);

        FSOUND_DSP_SetActive(dsp, 1);
}
</code></pre>
<p>DSPInit ist im public bereich und dspCallback und die Variable BPMDetection im private.</p>
<p>Jetzt bekomm ich diese Fehlermeldung von Borland</p>
<pre><code>[C++ Fehler] BPMKlasse.h(199): E2231 Element BPMErkennung::BPMDetection kann nicht ohne ein Objekt verwendet werden
  [C++ Fehler] BPMKlasse.h(202): E2231 Element BPMErkennung::BPMDetection kann nicht ohne ein Objekt verwendet werden
</code></pre>
<p>Die Fehlermeldung sagt mir gar nichts. Was meint denn der für ein Objekt?</p>
<p>ich hab mal spaßeshalber die BPMDetect auf static gesetzt und dann BPMErkennung::BPMDetection als Variable benutzt. Dann ist zwar diese fehlermdelung weg, aber wenn ich die Klasse in Borland definiere, bekomm ich ne fehlermeldung &quot;unresoved external&quot;</p>
<p>Wär echt nett wenn mir da jemand weiter helfen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171112/fehlermeldung-nach-erstellen-von-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 04:37:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171112.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Jan 2007 17:00:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 17:00:06 GMT]]></title><description><![CDATA[<p>Hi, ich hoffe mir kann jemand weiter helfen</p>
<p>Ich hab eine klasse erstellt, die folgende methoden enthält:</p>
<pre><code class="language-cpp">void* __stdcall BPMErkennung::dspCallback(void* originalbuffer,void* newbuffer, int length, void* param)
{
        if(BPMDetection != 0)
        {
               for(int i=0; i&lt; length - 1;i++)
                       BPM_AddSample(BPMDetection, (float)BPMErkennung::getShortIntFromArray(reinterpret_cast&lt;short*&gt;(originalbuffer), i * 2));
       }
        return newbuffer;
}

void BPMErkennung::DSPInit(void)
{

        FSOUND_DSPUNIT *dsp;

        dsp = FSOUND_DSP_Create(dspCallback, FSOUND_DSP_DEFAULTPRIORITY_USER + 10, 0);

        FSOUND_DSP_SetActive(dsp, 1);
}
</code></pre>
<p>DSPInit ist im public bereich und dspCallback und die Variable BPMDetection im private.</p>
<p>Jetzt bekomm ich diese Fehlermeldung von Borland</p>
<pre><code>[C++ Fehler] BPMKlasse.h(199): E2231 Element BPMErkennung::BPMDetection kann nicht ohne ein Objekt verwendet werden
  [C++ Fehler] BPMKlasse.h(202): E2231 Element BPMErkennung::BPMDetection kann nicht ohne ein Objekt verwendet werden
</code></pre>
<p>Die Fehlermeldung sagt mir gar nichts. Was meint denn der für ein Objekt?</p>
<p>ich hab mal spaßeshalber die BPMDetect auf static gesetzt und dann BPMErkennung::BPMDetection als Variable benutzt. Dann ist zwar diese fehlermdelung weg, aber wenn ich die Klasse in Borland definiere, bekomm ich ne fehlermeldung &quot;unresoved external&quot;</p>
<p>Wär echt nett wenn mir da jemand weiter helfen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214614</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 22 Jan 2007 17:00:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 17:17:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Könntest du uns noch die Klassendeklaration zeigen, damit wir wissen wovon du redest. <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/1214627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214627</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 22 Jan 2007 17:17:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 17:46:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class BPMErkennung
{
        private:
        int BPMDetection;
        static void* __stdcall dspCallback(void* originalbuffer,void* newbuffer, int length, void* param);
        static void BPM_AddSample(int bpm, float sample);
        static signed short getShortIntFromArray(signed short *buffer, int pos);
        double BPM_getParameter(int bpm, int param);
        int BPM_Create(void);
        void BPM_Destroy(int bpm);

        public:
        void Init(void);
        void Close();
        double BPMWert(int param);
        void BPM_setParameter(int bpm, int param, double value);
        signed short getFloatFromArray(signed short *buffer, int pos);
        void BPM_Register(int code[10]);
        void DSPInit(void);
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1214645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214645</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 22 Jan 2007 17:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 17:57:04 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du versuchst aus der statischen Methode dspCallback heraus die nichtsstatische Methode BPMDetection aufzurufen. Das geht natürlich nicht. Du must dein Klassenkonzept überdenken, im einfachsten Fall reicht es das static zu entfernen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214652</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 22 Jan 2007 17:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 18:02:08 GMT]]></title><description><![CDATA[<p>dspCallback ist static und besitzt damit keinen Zugriff auf den internen this-Pointer und kann somit auch nicht direkt auf BPMDetection zugreifen. Du müsstest dieser Funktion noch ein Objekt vom Typ BPMErkennung mit übergeben (oder BPMDetection direkt).</p>
<p>[edit]akari war schon wieder schneller.<br />
Wenn er die Funktion, wie der Name schon sagt, als Callback-Funktione nutzen will, sollte sie schon static sein sonst wird das mit der Übergabe schwierig.[edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214654</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 22 Jan 2007 18:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 18:28:30 GMT]]></title><description><![CDATA[<p>angangs habe ich das ganze auch ohne static gemacht, das problem ist, wenn ich es weg lasse dann komme diese Fehlermeldungen:</p>
<pre><code class="language-cpp">[C++ Fehler] BPMKlasse.h(202): E2034 Konvertierung von 'void * (__stdcall * (_closure )(void *,void *,int,void *))(void *,void *,int,void *)' nach 'void * (__stdcall *)(void *,void *,int,void *)' nicht möglich
  [C++ Fehler] BPMKlasse.h(202): E2342 Keine Übereinstimmung des Typs beim Parameter 'callback' ('void * (__stdcall *)(void *,void *,int,void *)' erwartet, 'void' erhalten)
</code></pre>
<p>Irgendwie hanks immer an einer ecke <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/1214674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214674</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Mon, 22 Jan 2007 18:28:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung nach erstellen von klassen on Mon, 22 Jan 2007 18:59:50 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das ist genaus das was Braunstein gemeint hat. Du brauchst das static, weil du die Methode einem C-Funktionspointer zuweisen willst. Du must für die Callback-Methode noch einen Pointer auf die eigentliche Instanz mitgeben, dazu haben die meisten Callback-System noch einen extra void*-Parameter.<br />
Hier findst du eine detaillierte <a href="http://oopweb.com/CPP/Documents/FunctionPointers/Volume/CCPP/callback/callback.html#chapter3" rel="nofollow">Erklärung</a> zum allgemeinen Konzept des Callbacks</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214707</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 22 Jan 2007 18:59:50 GMT</pubDate></item></channel></rss>