<?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[Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe hier eine Fehlermeldung, mit der ich absolut nichts anfangen kann, leider.</p>
<p>Und zwar versuche ich mich gerade ein bisschen unseren OPC-Client zu erweitern.</p>
<p>Hierfuer gibt es in einer Headerdatei eine vorgegebenen struct-Datentyp, sowie eine Klassenmethode:</p>
<p>Datentyp:</p>
<pre><code>typedef struct  tagOPCBROWSEELEMENT
    {
    /* [string] */ LPWSTR szName;
    /* [string] */ LPWSTR szItemID;
    DWORD dwFlagValue;
    DWORD dwReserved;
    OPCITEMPROPERTIES ItemProperties;
    }	OPCBROWSEELEMENT;
</code></pre>
<p>Dieser Datentyp wird als letzter Uebergangsparameter bei der nachfolgenden Funktion benoetigt, hier werden die Rueckgabewerte der Serveranfrage hinein geschrieben:</p>
<p>Die Funktion ist so in der Headerdatei implementiert:</p>
<pre><code class="language-cpp">virtual HRESULT STDMETHODCALLTYPE Browse( 
            /* [string][in] */ LPWSTR szItemID,
            /* [string][out][in] */ LPWSTR __RPC_FAR *pszContinuationPoint,
            /* [in] */ DWORD dwMaxElementsReturned,
            /* [in] */ OPCBROWSEFILTER dwBrowseFilter,
            /* [string][in] */ LPWSTR szElementNameFilter,
            /* [string][in] */ LPWSTR szVendorFilter,
            /* [in] */ BOOL bReturnAllProperties,
            /* [in] */ BOOL bReturnPropertyValues,
            /* [in] */ DWORD dwPropertyCount,
            /* [size_is][in] */ DWORD __RPC_FAR *pdwPropertyIDs,
            /* [out] */ BOOL __RPC_FAR *pbMoreElements,
            /* [out] */ DWORD __RPC_FAR *pdwCount,
            /* [size_is][size_is][out] */ OPCBROWSEELEMENT __RPC_FAR *__RPC_FAR *ppBrowseElements) = 0;

    };
</code></pre>
<p>Nun mache ich in meiner cpp-Datei eine Funktion, die so ausschaut:</p>
<pre><code class="language-cpp">void OPC_Browse(OPC_ARGS&amp; opc_args)
{
	OPCBROWSEFILTER dwBrowseFilter = OPC_BROWSE_FILTER_ALL;
	int *bMoreElements = false;
	DWORD *szElementArray = 0;
	OPCBROWSEELEMENT **pElementArray;
	DWORD *dwPropertyCnt = 0;

	IOPCBrowse::Browse(NULL			/* Name of branch -&gt; NULL: no branch specified */
						, NULL		/* Continuation Point -&gt; NULL: Continuation Point will nto be set */
						, 100		/* Max Elements Returned */
						, dwBrowseFilter	/* Enumeration: 1= All, 2=Branch, 3=Items */
						, NULL		/* Filter */
						, NULL		/* Vendor Filter */
						, true		/* return all properties */
						, true		/* return properties values in addition to properties name */
						, NULL		/* An Array of Properties ID */
						, dwPropertyCnt /* Number of Property-IDs */
						, bMoreElements /* Return Value, if MaxElements reached */
						, szElementArray /* Return Size of Element Array */
						, pElementArray); /* Array of Elements returned by Server */

}
</code></pre>
<p>Ich mache nichts anderes, als die vorgegebene Funktionen mit ihren Datentypen aufzurufen. Beim letzten Uebergabeparameter bringt mir jedoch der Compile folgende Fehlermeldung:</p>
<p>Fehlerbeschreibung:<br />
d:\psi-opc\opcclpsi\opc_v1\opc_v1.cpp(1348) : error C2352: 'IOPCBrowse::Browse' : Unzulaessiger Aufruf einer nichtstatischen Member-Funktion<br />
d:\psi-opc\opcclpsi\opc_v1\opcda.h(3494) : Siehe Deklaration von 'Browse'</p>
<p>Vielleicht kann mir ein Experte zumindest naeher bringen, welchen Fehler ich hier mache? Bzw. wie ich den letzten Parameter aufrufen soll, es hat mit sicherheit etwas mit den Adressuebergaben zu tun, oder?</p>
<p>Waere nett, wenn mir jemand dabei helfen koennte...</p>
<p>Vielen Dank schonmal an alle <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/171346/kopilierungsfehler-datentypproblem-statische-nichtstatischer-methodenaufruf</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 06:45:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171346.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jan 2007 16:06:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf? on Wed, 24 Jan 2007 16:06:14 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe hier eine Fehlermeldung, mit der ich absolut nichts anfangen kann, leider.</p>
<p>Und zwar versuche ich mich gerade ein bisschen unseren OPC-Client zu erweitern.</p>
<p>Hierfuer gibt es in einer Headerdatei eine vorgegebenen struct-Datentyp, sowie eine Klassenmethode:</p>
<p>Datentyp:</p>
<pre><code>typedef struct  tagOPCBROWSEELEMENT
    {
    /* [string] */ LPWSTR szName;
    /* [string] */ LPWSTR szItemID;
    DWORD dwFlagValue;
    DWORD dwReserved;
    OPCITEMPROPERTIES ItemProperties;
    }	OPCBROWSEELEMENT;
</code></pre>
<p>Dieser Datentyp wird als letzter Uebergangsparameter bei der nachfolgenden Funktion benoetigt, hier werden die Rueckgabewerte der Serveranfrage hinein geschrieben:</p>
<p>Die Funktion ist so in der Headerdatei implementiert:</p>
<pre><code class="language-cpp">virtual HRESULT STDMETHODCALLTYPE Browse( 
            /* [string][in] */ LPWSTR szItemID,
            /* [string][out][in] */ LPWSTR __RPC_FAR *pszContinuationPoint,
            /* [in] */ DWORD dwMaxElementsReturned,
            /* [in] */ OPCBROWSEFILTER dwBrowseFilter,
            /* [string][in] */ LPWSTR szElementNameFilter,
            /* [string][in] */ LPWSTR szVendorFilter,
            /* [in] */ BOOL bReturnAllProperties,
            /* [in] */ BOOL bReturnPropertyValues,
            /* [in] */ DWORD dwPropertyCount,
            /* [size_is][in] */ DWORD __RPC_FAR *pdwPropertyIDs,
            /* [out] */ BOOL __RPC_FAR *pbMoreElements,
            /* [out] */ DWORD __RPC_FAR *pdwCount,
            /* [size_is][size_is][out] */ OPCBROWSEELEMENT __RPC_FAR *__RPC_FAR *ppBrowseElements) = 0;

    };
</code></pre>
<p>Nun mache ich in meiner cpp-Datei eine Funktion, die so ausschaut:</p>
<pre><code class="language-cpp">void OPC_Browse(OPC_ARGS&amp; opc_args)
{
	OPCBROWSEFILTER dwBrowseFilter = OPC_BROWSE_FILTER_ALL;
	int *bMoreElements = false;
	DWORD *szElementArray = 0;
	OPCBROWSEELEMENT **pElementArray;
	DWORD *dwPropertyCnt = 0;

	IOPCBrowse::Browse(NULL			/* Name of branch -&gt; NULL: no branch specified */
						, NULL		/* Continuation Point -&gt; NULL: Continuation Point will nto be set */
						, 100		/* Max Elements Returned */
						, dwBrowseFilter	/* Enumeration: 1= All, 2=Branch, 3=Items */
						, NULL		/* Filter */
						, NULL		/* Vendor Filter */
						, true		/* return all properties */
						, true		/* return properties values in addition to properties name */
						, NULL		/* An Array of Properties ID */
						, dwPropertyCnt /* Number of Property-IDs */
						, bMoreElements /* Return Value, if MaxElements reached */
						, szElementArray /* Return Size of Element Array */
						, pElementArray); /* Array of Elements returned by Server */

}
</code></pre>
<p>Ich mache nichts anderes, als die vorgegebene Funktionen mit ihren Datentypen aufzurufen. Beim letzten Uebergabeparameter bringt mir jedoch der Compile folgende Fehlermeldung:</p>
<p>Fehlerbeschreibung:<br />
d:\psi-opc\opcclpsi\opc_v1\opc_v1.cpp(1348) : error C2352: 'IOPCBrowse::Browse' : Unzulaessiger Aufruf einer nichtstatischen Member-Funktion<br />
d:\psi-opc\opcclpsi\opc_v1\opcda.h(3494) : Siehe Deklaration von 'Browse'</p>
<p>Vielleicht kann mir ein Experte zumindest naeher bringen, welchen Fehler ich hier mache? Bzw. wie ich den letzten Parameter aufrufen soll, es hat mit sicherheit etwas mit den Adressuebergaben zu tun, oder?</p>
<p>Waere nett, wenn mir jemand dabei helfen koennte...</p>
<p>Vielen Dank schonmal an alle <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/1216144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216144</guid><dc:creator><![CDATA[Biasto_M]]></dc:creator><pubDate>Wed, 24 Jan 2007 16:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf? on Wed, 24 Jan 2007 21:05:47 GMT]]></title><description><![CDATA[<p>Wenn ich richtig sehe, rufst du da eine nicht statische Funktion auf ohne vorher das zugehörige Objekt zu erzeugen. Ich weiss zwar nicht was IOPCBrowse sonst so macht aber Du kannst mal folgendes versuchen:</p>
<pre><code class="language-cpp">IOPCBrowse iopcBrowse;
    iopcBrowse.Browse( NULL            /* Name of branch -&gt; NULL: no branch specified */
                        , NULL        /* Continuation Point -&gt; NULL: Continuation Point will nto be set */
                        , 100        /* Max Elements Returned */
                        , dwBrowseFilter    /* Enumeration: 1= All, 2=Branch, 3=Items */
                        , NULL        /* Filter */
                        , NULL        /* Vendor Filter */
                        , true        /* return all properties */
                        , true        /* return properties values in addition to properties name */
                        , NULL        /* An Array of Properties ID */
                        , dwPropertyCnt /* Number of Property-IDs */
                        , bMoreElements /* Return Value, if MaxElements reached */
                        , szElementArray /* Return Size of Element Array */
                        , pElementArray); /* Array of Elements returned by Server */
</code></pre>
<p>statt IOPCBrowse::Browse(...)</p>
<p>Viel Erfolg <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/1216419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216419</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Wed, 24 Jan 2007 21:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf? on Wed, 24 Jan 2007 23:51:05 GMT]]></title><description><![CDATA[<p>Hi Biasto,</p>
<p>ich habe &quot;OPC-Client&quot; gelesen. Dann noch ein aufruf von ***IOPCBrowse::Browse(..)***, da gehen bei mir die Alarmglocken an!</p>
<p>OPC, ich denke mal, du arbeitest dabei mit einem Toolkit, das auf DCOM basiert. Dafür spricht ja auch <em><strong>IOPCBrowse</strong></em>.</p>
<p>Nun, Ich habe mal einen OPC Server implementiert. Daher meine Reaktion. Generell kannst du, wie connan es richtig kommentierte, ohne eine Objekt-Instanz (sei es dynamisch auf dem Heap, oder wie connan vorgeschlagen hat, als Instanz auf dem Stack) eine nicht static funktion nicht aufrufen.</p>
<p>Speziell in Deinem Falle aber denke ich, Du musst etwas tiefer in DCOM einsteigen. IOPCBrowse ist (so sehe ich das aus dem Namen) ein vom ClassWizard erzeugtes Interface. Dieses &quot;Ding&quot; wird irgendwo erzeugt, und zwar mit einer Funktion namens CoCreateInstance(..) oder CoCreateInstanceEX(..).</p>
<p>So, und damit wird das IOPCBrowse erzeugt, und kann durchaus verwendet werden. Aber der Zugriff muss dabei ggf. über QueryInterface(..) erfolgen.</p>
<p>Zum Thema COM/DCOM gibt z.B. es unter <a href="http://www.codeproject.com/com/hellotutorial1.asp" rel="nofollow">http://www.codeproject.com/com/hellotutorial1.asp</a> den Einstieg. Das hat auch mir sehr geholfen, die Zusammenhänge etwas besser zu verstehen.</p>
<p>Gruss, Gio</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216526</guid><dc:creator><![CDATA[Gio]]></dc:creator><pubDate>Wed, 24 Jan 2007 23:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf? on Thu, 25 Jan 2007 07:32:45 GMT]]></title><description><![CDATA[<p>Hallo Gio,<br />
danke fuer deine Antwort!</p>
<p>Ich gehe mal stark davon aus, das du recht hast, bei IOPCBrowse handelt es sich um ein Interface.</p>
<p>Kannst du mir evtl. 'ne Idee geben, wie ich dieses Interface bzw. vielmehr die Methoden nutzen kann<br />
Es handelt sich hierbei um eine idl-Datei, die ich aus der Spezifikation implementiert habe!</p>
<p>Instanziere ich dieses Objekt, dann kommen Fehlermeldungen das virtuelle Methoden nicht definiert wurden.</p>
<p>Waere nett, wenn mir da jemand nochmals helfen koennte.<br />
Vielen Dank aber schonmal fuer die gegeben Hinweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216585</guid><dc:creator><![CDATA[Biasto_M]]></dc:creator><pubDate>Thu, 25 Jan 2007 07:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kopilierungsfehler - Datentypproblem ? statische&#x2F;nichtstatischer Methodenaufruf? on Thu, 25 Jan 2007 07:42:54 GMT]]></title><description><![CDATA[<p>Du hast die Antwort schon bekommen. Erzeuge das entsprechende Objekt, oder besorge Dir den entsprechenden Zeiger auf das Interface von einen bestehenden Objekt mit einem entsprechenden Methodenaufruf oder Property oder eben QueryInterface.</p>
<p>Objekte werden mit CoCreateInstance(Ex) erzeugt!</p>
<p>Besorg Dir entsprechenden Beispielcode. Ohne genaues wissen über die COM-Objekt Struktur wird Dir da kaum einer helfen können. Oder wedne Dich an den Hersteller und frage nach Beispieln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216589</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 25 Jan 2007 07:42:54 GMT</pubDate></item></channel></rss>