<?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[Compilerfehler]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich vollziehe gerade einige Codebeispiele aus Stroustrups Buch</p>
<p>Programming -- Principles and Practice Using C++ nach.</p>
<p>Gerade schaue ich mir ein Template an, um strings in andere Variablen zu konvertieren.</p>
<pre><code>template &lt;class T&gt;
T fromstring (const string&amp; s )
{
	T result;
	istringstream is(s);
	if (!(is &gt;&gt; result)) throw bad_from_string();
	return result;
}
</code></pre>
<p>Wie man unten sieht, wird die Konvertierung durch eine mögliche Exception abgesichert. Diese ist so definiert:</p>
<pre><code>struct bad_from_string : std::bad_cast
   // Klasse, die Fehler bei der Umwandlung von Strings meldet 
{
   const char* what() const throw()  // überschreibe what() von bad_cast
   {
      return &quot;Gescheiterte Umwandlung von string&quot;;
   }
};
</code></pre>
<p>Diese letzte Struktur macht dem Compiler allerdings Probleme (GCC 4.7.2 unter Fedora 17 ) die entsprechende Fehlermeldung lautet</p>
<pre><code>/ Fehler: expected class-name before »{« token
</code></pre>
<p>Weiß hier jemand Rat? Eigentlich sollte und müsste das anstandslos kompilieren</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312918/compilerfehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 12:01:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312918.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jan 2013 11:22:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 11:22:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich vollziehe gerade einige Codebeispiele aus Stroustrups Buch</p>
<p>Programming -- Principles and Practice Using C++ nach.</p>
<p>Gerade schaue ich mir ein Template an, um strings in andere Variablen zu konvertieren.</p>
<pre><code>template &lt;class T&gt;
T fromstring (const string&amp; s )
{
	T result;
	istringstream is(s);
	if (!(is &gt;&gt; result)) throw bad_from_string();
	return result;
}
</code></pre>
<p>Wie man unten sieht, wird die Konvertierung durch eine mögliche Exception abgesichert. Diese ist so definiert:</p>
<pre><code>struct bad_from_string : std::bad_cast
   // Klasse, die Fehler bei der Umwandlung von Strings meldet 
{
   const char* what() const throw()  // überschreibe what() von bad_cast
   {
      return &quot;Gescheiterte Umwandlung von string&quot;;
   }
};
</code></pre>
<p>Diese letzte Struktur macht dem Compiler allerdings Probleme (GCC 4.7.2 unter Fedora 17 ) die entsprechende Fehlermeldung lautet</p>
<pre><code>/ Fehler: expected class-name before »{« token
</code></pre>
<p>Weiß hier jemand Rat? Eigentlich sollte und müsste das anstandslos kompilieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290592</guid><dc:creator><![CDATA[dödeldu]]></dc:creator><pubDate>Thu, 17 Jan 2013 11:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 11:27:36 GMT]]></title><description><![CDATA[<p>Header vergessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290596</guid><dc:creator><![CDATA[typeinfo]]></dc:creator><pubDate>Thu, 17 Jan 2013 11:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 13:32:30 GMT]]></title><description><![CDATA[<p>Deine 'bad_fromString' Klasse erbt privat von 'bad_cast', ichw eis nicht ob das der Fehler ist, aber das ist auf jedenfall nicht so gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290666</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Jan 2013 13:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 13:35:16 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Deine 'bad_fromString' Klasse erbt privat von 'bad_cast', ichw eis nicht ob das der Fehler ist, aber das ist auf jedenfall nicht so gut.</p>
</blockquote>
<p>schau nochmal genau hin <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>
<p>Auf den möglicherweise fehlenden Header wurde schon hingewiesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290669</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 17 Jan 2013 13:35:16 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 13:40:10 GMT]]></title><description><![CDATA[<p>Sag nicht bei struct ist auch die Vererbung default public?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290675</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Jan 2013 13:40:10 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 13:41:05 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Sag nicht bei struct ist auch die Vererbung default public?!</p>
</blockquote>
<p>Deshalb enthält tmp-code für gewöhnlich kein explizites public.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290677</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 17 Jan 2013 13:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 13:42:19 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Okay... wusste ich nicht, aber jetzt wo du's sagst, eigentlich auch nicht mehr als logisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290680</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 17 Jan 2013 13:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 17:27:53 GMT]]></title><description><![CDATA[<p>Alle die im lehrbuch auch eingebunden sind wurden eingebunden</p>
<p>Exception<br />
Stdexcept<br />
habs auch mal mit typeinfo versucht das gibt ganz irre fehler</p>
<p>Wenn ihr mir sagt welche ich brauche gucke ich aber gerne noch mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290757</guid><dc:creator><![CDATA[dödeldu]]></dc:creator><pubDate>Thu, 17 Jan 2013 17:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 17:42:23 GMT]]></title><description><![CDATA[<p>#include &lt;typeinfo&gt; fehlt vermutlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290766</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 17 Jan 2013 17:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 19:01:11 GMT]]></title><description><![CDATA[<p>Ich hab mir den code noch mal angesehen.<br />
Der Typeinfo header fehlt tatsächlich, führt aber auch nicht dazu dass das Programm kompiliert. Die genauen Fehlermeldungen habe ich gerade nicht zur Hand, da ich an einem Uni Rechner ohne Compiler sitze.</p>
<p>Gefehlt hat aber wirklich eine Header-Datei. Stroustrup macht das in diesem Buch so, dass er dich ein wenig von der STL abschirmt, und seinen eigenen Header std_lib_facilities.h benutzt. Dort werden diese Header genutzt.</p>
<pre><code>#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;stdexcept&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;boost/regex.hpp&gt;
</code></pre>
<p>Wenn ich mal alles rausnehme, was der obige Code sicher nicht braucht, dann stellt sich heraus, dass das kompiliert, wenn man den Boost Header inkludiert. Ohne den geht nix. Frage an die Experten: Soweit ich das sehe, kompiliert die problematische STruktur deshalb nicht, weil sie von std::bad_cast erbt. Die Funktion ist aber doch wirklich in typeinfo defniert und sicher nicht bei boost, oder? Ich bin etwas verwirrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290792</guid><dc:creator><![CDATA[dödeldum]]></dc:creator><pubDate>Thu, 17 Jan 2013 19:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 19:08:10 GMT]]></title><description><![CDATA[<p>Um das zu beantworten, müsstest du mal die vollständige Fehlermeldung zeigen.</p>
<p>Du darfst aber davon ausgehen, dass dein Compiler recht hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290794</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 17 Jan 2013 19:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to Compilerfehler on Thu, 17 Jan 2013 23:12:39 GMT]]></title><description><![CDATA[<p>Erst mal ein Tipp: ein vollständiges compilierbares (bzw. in dem Fall nicht compilierbares) Beispiel ist sehr hilfreich. Ich habe das mal so zusammen kopiert:</p>
<pre><code>#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;typeinfo&gt;

struct bad_from_string : std::bad_cast
{
   const char* what() const throw()  // überschreibe what() von bad_cast
   {
      return &quot;Gescheiterte Umwandlung von string&quot;;
   }
};

template &lt;class T&gt;
T fromstring (const std::string&amp; s )
{
    T result;
    std::istringstream is(s);
    if (!(is &gt;&gt; result)) throw bad_from_string();
    return result;
}
</code></pre>
<p>Und siehe da - es lässt sich übersetzen.</p>
<p>Du kannst &lt;typeinfo&gt; offensichtlich deswegen durch &lt;boost/regex.hpp&gt; ersetzen, da dieser die &lt;typeinfo&gt; includiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290858</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 17 Jan 2013 23:12:39 GMT</pubDate></item></channel></rss>