<?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[function mit const pointer]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal eine Frage an die Standardexperten.</p>
<p>Wenn ich dieses Codeschnipsel übersetze:</p>
<pre><code>SSL_METHOD *meth;	/* Global system initialization*/	

	if( first )
	{
		SSL_library_init();
		SSL_load_error_strings();
		first = false;
	}
	/* Create our context*/
	meth=SSLv23_method();
	ctx=SSL_CTX_new(meth);
</code></pre>
<p>meckert einer meiner Compiler, weil er sich weigert den Pointer meth in der letzten Zeile nach const *... zu komvertieren und ich solle den Schalter -fpermissive setzen. Ich verstehe jetzt allerdings den Sinn der Fehlermeldung nicht. Warum sollte es ein Problem sein, einer Funktion, die einen const Zeiger erwartet einen nicht const Zeiger zu geben?</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322378/function-mit-const-pointer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 10:31:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322378.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Dec 2013 19:16:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:16:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mal eine Frage an die Standardexperten.</p>
<p>Wenn ich dieses Codeschnipsel übersetze:</p>
<pre><code>SSL_METHOD *meth;	/* Global system initialization*/	

	if( first )
	{
		SSL_library_init();
		SSL_load_error_strings();
		first = false;
	}
	/* Create our context*/
	meth=SSLv23_method();
	ctx=SSL_CTX_new(meth);
</code></pre>
<p>meckert einer meiner Compiler, weil er sich weigert den Pointer meth in der letzten Zeile nach const *... zu komvertieren und ich solle den Schalter -fpermissive setzen. Ich verstehe jetzt allerdings den Sinn der Fehlermeldung nicht. Warum sollte es ein Problem sein, einer Funktion, die einen const Zeiger erwartet einen nicht const Zeiger zu geben?</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372425</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:27:36 GMT]]></title><description><![CDATA[<p>an meth kann dies nicht liegen da meth nicht cv-qualifiziert ist. poste mal bitte die definition von ctx.</p>
<p>edit:</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>ich habe mal eine Frage an die Standardexperten.</p>
</blockquote>
<p>soll nun nicht implizieren, dass ich mich als einen solchen einstufe nur weil ich mir die freiheit genommen habe, zu antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372429</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:31:17 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>an meth kann dies nicht liegen da meth nicht cv-qualifiziert ist. poste mal bitte die definition von ctx.</p>
</blockquote>
<p>Das war aber die Variable, die er angemeckert hat und so habe ich das Problem gelöst:</p>
<pre><code>ctx=SSL_CTX_new(SSLv23_method());
</code></pre>
<p>dann ist es auf allen Plattformen übersetzt worden.</p>
<p>ctx ist eine Membervariable und ist in der Klassendeklaration definiert:</p>
<pre><code>SSL_CTX			*ctx;
</code></pre>
<p>Laut Doku:</p>
<p><a href="http://www.openssl.org/docs/ssl/SSL_CTX_new.html" rel="nofollow">http://www.openssl.org/docs/ssl/SSL_CTX_new.html</a></p>
<p>ist das auch OK so.</p>
<p>mfg Martin<br />
P.S: Wer mir doch mal die Mühe machen herauszufinden, welcher Compiler gemeckert hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372431</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:32:26 GMT]]></title><description><![CDATA[<p>Du hast die falsche Zeile angegeben. Ich denke mal, das Problem ist, dass SSLv23_method() einen const-pointer zurückgibt, der natürlich nicht in SSL_METHOD umgewandelt werden darf.</p>
<p>Bitte nächstes mal die echte Fehlermeldung angeben und keine Paraphrasierung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372432</guid><dc:creator><![CDATA[herzlichenglückwunsch]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:47:21 GMT]]></title><description><![CDATA[<p>Diese Compiler haben's Problemlos übersetzt:</p>
<ul>
<li>powerpc-apple-darwin8-g++-4.0.0 (GCC) 4.0.0 20041026 (Apple Computer, Inc. build 4061)</li>
<li>i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)</li>
<li>g++ (SUSE Linux) 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]</li>
<li>Borland C++ 5.02</li>
<li>C++ Builder 5</li>
</ul>
<p>Nur der hier macht die Zicken:<br />
g++ (Debian 4.6.3-14+rpi1) 4.6.3</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372433</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 19:50:20 GMT]]></title><description><![CDATA[<p>Bleibt noch zu sagen, dass nirgendwo ein <em>const pointer</em> im Spiel ist.</p>
<pre><code>SSL_METHOD* const meth;  // nirgendwo...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2372435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372435</guid><dc:creator><![CDATA[Begriff]]></dc:creator><pubDate>Tue, 17 Dec 2013 19:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 20:00:58 GMT]]></title><description><![CDATA[<p>herzlichenglückwunsch schrieb:</p>
<blockquote>
<p>Du hast die falsche Zeile angegeben. Ich denke mal, das Problem ist, dass SSLv23_method() einen const-pointer zurückgibt, der natürlich nicht in SSL_METHOD umgewandelt werden darf.</p>
<p>Bitte nächstes mal die echte Fehlermeldung angeben und keine Paraphrasierung!</p>
</blockquote>
<blockquote>
<p>g++ -I./INCLUDE -DNDEBUG -O3 -Wno-deprecated -c CTOOLS/ssl_socket.cpp -o /Object/gaklib/uranus/ssl_socket.o<br />
CTOOLS/ssl_socket.cpp: In member function ‘SSL_LIB_ERROR SSL_SOCKET_STREAMBUF::initialize_ctx()’:<br />
CTOOLS/ssl_socket.cpp:136:21: error: invalid conversion from ‘const SSL_METHOD* {aka const ssl_method_st*}’ to ‘SSL_METHOD* {aka ssl_method_st*}’ [-fpermissive]<br />
make: *** [/Object/gaklib/uranus/ssl_socket.o] Fehler 1</p>
</blockquote>
<p>Das war die Zeile die angemeckert wurde:</p>
<pre><code>meth=SSLv23_method();
</code></pre>
<p>Jetzt sehe ich auch das Problem:</p>
<p>Offensichtlich wurde auf dem Raspberry eine neuere Version der OpenSSL installiert, die andere Zeigertypen zurückliefert und erwartet. Ich habe in meinem Originalpost fälschlicherweise die falsche Zeile angegeben, weil nach meiner Änderung für den Raspberry (ich hatte aus meth einen const-Zeiger gemacht), die anderen Compiler korrekterweise sich eben beim Aufruf von SSL_CTX_new beschwert hatten.</p>
<p>Da habe ich mich also geirrt und es ist kein merkwürdiger Standard dazugekommen.</p>
<p>Vielen Dank an alle, die nachgedacht haben.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372439</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 17 Dec 2013 20:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 20:02:50 GMT]]></title><description><![CDATA[<p>also fassen wir zusammen:</p>
<p>wir haben eine funktion mit folgender signatur:</p>
<pre><code>SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
</code></pre>
<p>und deine beschreibung im ersten post:</p>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>[...]den Pointer meth in der letzten Zeile nach const *... zu komvertieren[...]</p>
</blockquote>
<p>infolge dessen teile ich dir gerne mit, dass cv-qualifikationen (auch beim pointee) implizit hinzugefügt werden können:</p>
<pre><code>int a;
int* b = &amp;a;
int const* c = b; // Hier
</code></pre>
<p>der fehler wird also sicher nicht da sein.</p>
<p>ausserdem finde ich nirgends eine referenz inder die genaue signatur der funktion &quot;SSLv23_method&quot; aufgeführt ist, daher kann man den echten fehler nur erahnen.</p>
<p>sollte herzlichenglückwunsch recht behalten mit:</p>
<p>herzlichenglückwunsch schrieb:</p>
<blockquote>
<p>Du hast die falsche Zeile angegeben. Ich denke mal, das Problem ist, dass SSLv23_method() einen const-pointer zurückgibt, der natürlich nicht in SSL_METHOD umgewandelt werden darf.</p>
<p>Bitte nächstes mal die echte Fehlermeldung angeben und keine Paraphrasierung!</p>
</blockquote>
<p>, dann ist es eindeutig. meth müsste wiefolgt definiert werden:</p>
<pre><code>SSL_METHOD const* meth;
</code></pre>
<p>ps.: bitte schreibe die compilermeldungen 1:1 so hier hin wie man sie dir ausgibt, das ist viiiiel besser.</p>
<p>edit: zu spät, gut dass es nun geklärt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372440</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Tue, 17 Dec 2013 20:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 20:03:09 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<ul>
<li>powerpc-apple-darwin8-g++-4.0.0 (GCC) 4.0.0 20041026 (Apple Computer, Inc. build 4061)</li>
<li>i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)</li>
<li>g++ (SUSE Linux) 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]</li>
<li>Borland C++ 5.02</li>
<li>C++ Builder 5</li>
</ul>
</blockquote>
<p>Solche Uraltcompiler lassen oft fehlerhaften Code durchgehen.</p>
<p>Und wenn du dich nicht sinnlos in indirekter Rede üben, sondern die Fehlermeldung posten würdest, könnte man die <strong>deinen</strong> Fehler klar benennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372441</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 17 Dec 2013 20:03:09 GMT</pubDate></item><item><title><![CDATA[Reply to function mit const pointer on Tue, 17 Dec 2013 20:18:43 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Solche Uraltcompiler lassen oft fehlerhaften Code durchgehen.</p>
</blockquote>
<p>Das Problem waren aber nicht die Uraltcompiler sondern jeweils die alte Version der openSSL. Die Compiler funktionieren ja ganz gut, wenn man davon absieht, daß die alten Borland Compiler die neueren Standards nicht kennen.</p>
<p>manni66 schrieb:</p>
<blockquote>
<p>Und wenn du dich nicht sinnlos in indirekter Rede üben, sondern die Fehlermeldung posten würdest, könnte man die <strong>deinen</strong> Fehler klar benennen.</p>
</blockquote>
<p>Ja, ich seh's ein. Ich hätte mir zuerst die Mühe machen müssen, den alten Code zu übersetzen, dann nochmal in Ruhe nachdenken und dann erst hier zu fragen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372448</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Tue, 17 Dec 2013 20:18:43 GMT</pubDate></item></channel></rss>