<?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[B-Baum: Statisches, konstates, öffentliches Attribut streikt]]></title><description><![CDATA[<p>Hallo!<br />
ich will (versuchen, ) einen STL-kompatiblen B-Baum beliebigen Grades (zu) programmieren. Leider bekomme ich Probleme bei öffentlichen, statischen und konstanten Membervariablen:</p>
<pre><code class="language-cpp">template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t = std::greater_equal&lt;key_t&gt;, typename allocator_t = std::allocator&lt;payload_t&gt; &gt;
class tree {

   // ...
public:
	static const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt; *null_ptr; // Steht für &quot;nichts&quot;
	static const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt; *invalid_ptr; // Steht für &quot;Fehler&quot;
};

// Definition unter der Klasse, node ist irgendeine Klasse:

// Zack:
template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t, typename allocator_t&gt;
const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt;* tree&lt;order, key_t, payload_t, compare_t, allocator_t&gt;::null_ptr = reinterpret_cast&lt;const node*&gt;(0);

template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t, typename allocator_t&gt;
const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt;* tree&lt;order, key_t, payload_t, compare_t, allocator_t&gt;::invalid_ptr = reinterpret_cast&lt;const node*&gt;(-1);
</code></pre>
<p>Die MSVCR9 (Visual Studio 2008) schluckt das anstandslos, der GCC meldet hingegen:</p>
<pre><code>Line 116: error: ISO C++ forbids declaration of 'type name' with no type
compilation terminated due to -Wfatal-errors.
</code></pre>
<p>Und verweist auf die erste <em>Definition</em> der Membervariable. Hat jemand eine Idee, was ich da tun kann? Diese Fehlermeldung sagt mir leider nicht viel.<br />
:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255946/b-baum-statisches-konstates-öffentliches-attribut-streikt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:02:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255946.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Dec 2009 23:14:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to B-Baum: Statisches, konstates, öffentliches Attribut streikt on Sat, 05 Dec 2009 23:18:32 GMT]]></title><description><![CDATA[<p>Hallo!<br />
ich will (versuchen, ) einen STL-kompatiblen B-Baum beliebigen Grades (zu) programmieren. Leider bekomme ich Probleme bei öffentlichen, statischen und konstanten Membervariablen:</p>
<pre><code class="language-cpp">template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t = std::greater_equal&lt;key_t&gt;, typename allocator_t = std::allocator&lt;payload_t&gt; &gt;
class tree {

   // ...
public:
	static const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt; *null_ptr; // Steht für &quot;nichts&quot;
	static const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt; *invalid_ptr; // Steht für &quot;Fehler&quot;
};

// Definition unter der Klasse, node ist irgendeine Klasse:

// Zack:
template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t, typename allocator_t&gt;
const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt;* tree&lt;order, key_t, payload_t, compare_t, allocator_t&gt;::null_ptr = reinterpret_cast&lt;const node*&gt;(0);

template &lt;unsigned order, typename key_t, typename payload_t, typename compare_t, typename allocator_t&gt;
const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt;* tree&lt;order, key_t, payload_t, compare_t, allocator_t&gt;::invalid_ptr = reinterpret_cast&lt;const node*&gt;(-1);
</code></pre>
<p>Die MSVCR9 (Visual Studio 2008) schluckt das anstandslos, der GCC meldet hingegen:</p>
<pre><code>Line 116: error: ISO C++ forbids declaration of 'type name' with no type
compilation terminated due to -Wfatal-errors.
</code></pre>
<p>Und verweist auf die erste <em>Definition</em> der Membervariable. Hat jemand eine Idee, was ich da tun kann? Diese Fehlermeldung sagt mir leider nicht viel.<br />
:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818430</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sat, 05 Dec 2009 23:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to B-Baum: Statisches, konstates, öffentliches Attribut streikt on Sat, 05 Dec 2009 23:19:57 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const typename node&lt;/* elend lange Argumentliste */&gt;* tree = /* ... */;
//       ^
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1818434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818434</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 05 Dec 2009 23:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to B-Baum: Statisches, konstates, öffentliches Attribut streikt on Sat, 05 Dec 2009 23:58:33 GMT]]></title><description><![CDATA[<p>Das habe ich auch schon probiert (VS besteht auf wesentlich weniger &quot;typenames&quot; als GCC)</p>
<p>Resultat, wenn ich ein typename davor setzte, egal ob bei Definition oder Deklaration:</p>
<pre><code>error: expected nested-name-specifier
</code></pre>
<p>Ach und sorry wegen der langen Liste. Sie wurde immer länger, irgendwie sind die ganzen Infos in ihr aber notwendig.<br />
:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818445</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sat, 05 Dec 2009 23:58:33 GMT</pubDate></item><item><title><![CDATA[Reply to B-Baum: Statisches, konstates, öffentliches Attribut streikt on Sun, 06 Dec 2009 09:54:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">reinterpret_cast&lt;const node*&gt;(0);
</code></pre>
<p>=&gt;</p>
<pre><code class="language-cpp">reinterpret_cast&lt;const node&lt;order, key_t, payload_t, compare_t, allocator_t&gt;*&gt;(0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1818510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818510</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Sun, 06 Dec 2009 09:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to B-Baum: Statisches, konstates, öffentliches Attribut streikt on Sun, 06 Dec 2009 10:01:18 GMT]]></title><description><![CDATA[<p>Genau das war's, danke. <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="🙂"
    /><br />
Ich hatte die Deklaration aus der Node-Klasse in die Tree-Klasse kopiert, aber die Template-Liste da nicht ergänzt. Erstaunlich, warum der Visual Studio Compiler das zulässt... Kann man den irgendwie etwas strikter aufdrehen? Ich meine, beim GCC waren das fatal errors und der VS gibt nicht mal eine Warnung.<br />
Danke<br />
:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1818514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1818514</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sun, 06 Dec 2009 10:01:18 GMT</pubDate></item></channel></rss>