<?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[Wo liegt der Fehler?]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe heute meinen alten code ausgegraben, aber heute geht da nichts mehr - ich bekomme eine liste Fehlermeldugen voll, obwohl, meines erachtens nach, müsste es so funktionieren - hat auch früher funktioniert...</p>
<pre><code class="language-cpp">#include &lt;exception&gt;
#include &lt;errno.h&gt;
#include &lt;cstring&gt;

class EErrno : public std::exception
{
	public:
		virtual char* pError( ) const = 0;
};

class ERead : public EErrno
{
	private:
		int errno;
	public:
        ERead( int in_errno ): errno(in_errno) {}
        char* pError( ) const { return strerror( errno ); }
};
</code></pre>
<p>und nun bekomme ich diese lange liste an fehlern für diese paar zeilen:</p>
<blockquote>
<p>g++ -o mini <a href="http://minitest.cc" rel="nofollow">minitest.cc</a><br />
<a href="http://minitest2.cc" rel="nofollow">minitest2.cc</a>: In constructor ‘ERead::ERead(int)’:<br />
minitest2.cc:16:32: error: anachronistic old-style base class initializer<br />
minitest2.cc:16:32: error: no matching function for call to ‘EErrno::EErrno(int&amp;)’<br />
minitest2.cc:6:1: note: candidates are: EErrno::EErrno()<br />
minitest2.cc:6:1: note: EErrno::EErrno(const EErrno&amp;)<br />
minitest2.cc:16:37: error: expected ‘{’ before ‘(’ token<br />
<a href="http://minitest2.cc" rel="nofollow">minitest2.cc</a>: In member function ‘virtual char* ERead::pError() const’:<br />
minitest2.cc:17:50: error: passing ‘const ERead’ as ‘this’ argument of ‘int* ERead::__errno_location()’ discards qualifiers</p>
</blockquote>
<p>Fällt jemanden was auf, was diese Fehler verursachen könnte?</p>
<p>Was mir noch zu denken gibt, dass &lt;string&gt; die strerror( ) Funktion nichtm ehr kennt, nur &lt;cstring&gt; bzw. &lt;string.h&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287629/wo-liegt-der-fehler</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 09:26:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287629.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Jun 2011 02:12:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 02:12:39 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe heute meinen alten code ausgegraben, aber heute geht da nichts mehr - ich bekomme eine liste Fehlermeldugen voll, obwohl, meines erachtens nach, müsste es so funktionieren - hat auch früher funktioniert...</p>
<pre><code class="language-cpp">#include &lt;exception&gt;
#include &lt;errno.h&gt;
#include &lt;cstring&gt;

class EErrno : public std::exception
{
	public:
		virtual char* pError( ) const = 0;
};

class ERead : public EErrno
{
	private:
		int errno;
	public:
        ERead( int in_errno ): errno(in_errno) {}
        char* pError( ) const { return strerror( errno ); }
};
</code></pre>
<p>und nun bekomme ich diese lange liste an fehlern für diese paar zeilen:</p>
<blockquote>
<p>g++ -o mini <a href="http://minitest.cc" rel="nofollow">minitest.cc</a><br />
<a href="http://minitest2.cc" rel="nofollow">minitest2.cc</a>: In constructor ‘ERead::ERead(int)’:<br />
minitest2.cc:16:32: error: anachronistic old-style base class initializer<br />
minitest2.cc:16:32: error: no matching function for call to ‘EErrno::EErrno(int&amp;)’<br />
minitest2.cc:6:1: note: candidates are: EErrno::EErrno()<br />
minitest2.cc:6:1: note: EErrno::EErrno(const EErrno&amp;)<br />
minitest2.cc:16:37: error: expected ‘{’ before ‘(’ token<br />
<a href="http://minitest2.cc" rel="nofollow">minitest2.cc</a>: In member function ‘virtual char* ERead::pError() const’:<br />
minitest2.cc:17:50: error: passing ‘const ERead’ as ‘this’ argument of ‘int* ERead::__errno_location()’ discards qualifiers</p>
</blockquote>
<p>Fällt jemanden was auf, was diese Fehler verursachen könnte?</p>
<p>Was mir noch zu denken gibt, dass &lt;string&gt; die strerror( ) Funktion nichtm ehr kennt, nur &lt;cstring&gt; bzw. &lt;string.h&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071808</guid><dc:creator><![CDATA[Feld]]></dc:creator><pubDate>Wed, 01 Jun 2011 02:12:39 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 02:30:12 GMT]]></title><description><![CDATA[<p>Ja, das sind die Freuden der Makros.<br />
Irgendwo in errno.h vergraben findest du folgende Zeile:<br />
<code>#define errno (*__errno_location ())</code></p>
<blockquote>
<p>Was mir noch zu denken gibt, dass &lt;string&gt; die strerror( ) Funktion nichtm ehr kennt, nur &lt;cstring&gt; bzw. &lt;string.h&gt;</p>
</blockquote>
<p>Die kannte sie noch nie. Vergleiche:<br />
cstring: <a href="http://www.cplusplus.com/reference/clibrary/cstring/" rel="nofollow">http://www.cplusplus.com/reference/clibrary/cstring/</a><br />
string: <a href="http://www.cplusplus.com/reference/string/" rel="nofollow">http://www.cplusplus.com/reference/string/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071809</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 01 Jun 2011 02:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 08:19:20 GMT]]></title><description><![CDATA[<p>Aber wie kann man es zum laufen bringen? Zusätzlich soll das Programm nicht nur an eine System gebungen sein...</p>
<p>strerror ist sehr wohl bestandteil von &lt;cstring&gt;</p>
<blockquote>
<p>Other:<br />
strerror Get pointer to error message string (function)<br />
strlen Get string length (function)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2071862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071862</guid><dc:creator><![CDATA[Feld]]></dc:creator><pubDate>Wed, 01 Jun 2011 08:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 08:24:46 GMT]]></title><description><![CDATA[<p>Feld schrieb:</p>
<blockquote>
<p>strerror ist sehr wohl bestandteil von &lt;cstring&gt;</p>
</blockquote>
<p>Aber nicht von &lt;string&gt; ! das eine ist die Biblitohek für oldscool C-Strings (also char-Arrays), das andere für die Klasse std::string.</p>
<p>Feld schrieb:</p>
<blockquote>
<p>Aber wie kann man es zum laufen bringen? Zusätzlich soll das Programm nicht nur an eine System gebungen sein...</p>
</blockquote>
<p>Am Besten implementierst du es mit ordentlichem, aktuellen (d.h. seit 1998 standardisiertem) C++ nochmal neu.<br />
Oder benennst deine lokale Variable so um, dass sie vielleicht nicht genau wie das Makro aus den C-Bibliotheken heißt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071870</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 01 Jun 2011 08:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 09:50:29 GMT]]></title><description><![CDATA[<p>Danke, jetzt funktioniert es wieder <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>wenn strerror in &lt;string&gt; nicht mehr vorhanden ist, dann gibt es wohl eine neue Funktion die das gleiche macht? -Bei Socketprogrammierung kommt man um &quot;errno&quot; nicht rum und diese Funktion leistet gute dienste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071934</guid><dc:creator><![CDATA[Feld]]></dc:creator><pubDate>Wed, 01 Jun 2011 09:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 10:21:19 GMT]]></title><description><![CDATA[<p>string ist ein ganz anderer Header als string.h! C++ ist nicht C!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071950</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 01 Jun 2011 10:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wo liegt der Fehler? on Wed, 01 Jun 2011 11:26:58 GMT]]></title><description><![CDATA[<p>Feld schrieb:</p>
<blockquote>
<p>wenn strerror in &lt;string&gt; nicht mehr vorhanden ist, dann gibt es wohl eine neue Funktion die das gleiche macht?</p>
</blockquote>
<ol>
<li>&quot;nicht mehr&quot; impliziert, dass sie mal vorhanden war. Es gab aber nie etwas in der Art in &lt;string&gt;</li>
<li>&lt;string&gt; hat mit &lt;cstring&gt;/&lt;string.h&gt; so gut wie nichts zu tun. &lt;string&gt; ist C++, in C++ arbeitet man nicht mehr mit globalen error-Variablen, deshalb gibts dort auch nichts vergleichbares.</li>
</ol>
<p>Du hast uns noch nicht genau gesagt, was du erreichen möchtest, nur angedeutet, was du tun möchtest, um das zu erreichen (das ist ein Unterschied!). Und du möchtest scheinbar nicht das richtige tun.</p>
<p>Feld schrieb:</p>
<blockquote>
<p>Bei Socketprogrammierung kommt man um &quot;errno&quot; nicht rum und diese Funktion leistet gute dienste.</p>
</blockquote>
<p>Ich korrigier das mal: die Socket-Bibliothek, die du benutzt, hat eine C-API und arbeitet mit &quot;errno&quot;. Da kommt man sehr wohl drum rum, und zwar indem man entweder eine C++-Biblitohek für Sockets benutzt, oder indem man die C-API sauber mit einer C++-Schicht kapselt, in der du dann allerdings die C-Fehlerbehandlung ordentlich in eine C++-Fehlerbehandlung übersetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2071977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2071977</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 01 Jun 2011 11:26:58 GMT</pubDate></item></channel></rss>