<?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[Problem mit typedef]]></title><description><![CDATA[<p>Hallo C++ Community!</p>
<p>Heute habe ich mal eine ehemalige Prüfungsaufgabe (Informatik) aus dem vergangenen Jahr hervorgeholt und probierte sie zu lösen, doch nun stecke ich an einem Compiler-Error fest.<br />
Hier erst mal der wichtigste Teil des Codes:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

#define MBYTES_PER_SECTOR 1

struct Disk
{
    int n_hdd;
    int n_cyl;
    int n_sect;
}
struct Server
{
    int n_flops;
    Disk disk;
}
typedef vector&lt;Server&gt; CalcCenter;    /* PROBLEM */

void addServer(CalcCenter&amp;, const Server&amp;);
int  diskCapacity(const Disk&amp;);
void properties(const CalcCenter&amp;, int&amp;, int&amp;);
</code></pre>
<p>danach folgt noch &quot;int main()&quot; und die Funktionen.</p>
<p>Nun meine Compiler Meldung sieht so aus:</p>
<pre><code>Compiler: Default compiler
Führt  g++.exe... aus
g++.exe &quot;C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp&quot; -o &quot;C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.exe&quot;    -I&quot;C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2\backward&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2\mingw32&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2&quot;  -I&quot;C:\Dev-Cpp\include&quot;   -L&quot;C:\Dev-Cpp\lib&quot; 
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected init-declarator before &quot;CalcCenter&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected `,' or `;' before &quot;CalcCenter&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: variable or field `addServer' declared void
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: `CalcCenter' was not declared in this scope
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before ',' token
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before &quot;const&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: initializer expression list treated as compound expression
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: expected `,' or `...' before '&amp;' token
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: ISO C++ forbids declaration of `CalcCenter' with no type
</code></pre>
<p>und so weiter...</p>
<p>Die erste Compiler Meldung ist die Wichtigste.<br />
Ich hab ne ganze weile nach dem zeugs gegoogelt, ich habe ein paar Hinweise gefunden wie z.B. man soll eher</p>
<pre><code>typedef typename ... ...
</code></pre>
<p>nehmen usw.<br />
hab jetzt einiges probiert, aber bin noch zu keiner Lösung für diesen &quot;typedef&quot; fehler gekommen.<br />
Könnte es an einem Compiler Bug liegen? (Wäre zwar ein bisschen komisch)</p>
<p>Falls sich keine Lösung finden lässt, wäre ich fast gezwungen &quot;#define ... ...&quot; zu verwenden.</p>
<p>Ich bin froh um jeden Hinweis zur Lösung!<br />
Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229401/problem-mit-typedef</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 16:07:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229401.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Dec 2008 10:25:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:25:17 GMT]]></title><description><![CDATA[<p>Hallo C++ Community!</p>
<p>Heute habe ich mal eine ehemalige Prüfungsaufgabe (Informatik) aus dem vergangenen Jahr hervorgeholt und probierte sie zu lösen, doch nun stecke ich an einem Compiler-Error fest.<br />
Hier erst mal der wichtigste Teil des Codes:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

#define MBYTES_PER_SECTOR 1

struct Disk
{
    int n_hdd;
    int n_cyl;
    int n_sect;
}
struct Server
{
    int n_flops;
    Disk disk;
}
typedef vector&lt;Server&gt; CalcCenter;    /* PROBLEM */

void addServer(CalcCenter&amp;, const Server&amp;);
int  diskCapacity(const Disk&amp;);
void properties(const CalcCenter&amp;, int&amp;, int&amp;);
</code></pre>
<p>danach folgt noch &quot;int main()&quot; und die Funktionen.</p>
<p>Nun meine Compiler Meldung sieht so aus:</p>
<pre><code>Compiler: Default compiler
Führt  g++.exe... aus
g++.exe &quot;C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp&quot; -o &quot;C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.exe&quot;    -I&quot;C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2\backward&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2\mingw32&quot;  -I&quot;C:\Dev-Cpp\include\c++\3.4.2&quot;  -I&quot;C:\Dev-Cpp\include&quot;   -L&quot;C:\Dev-Cpp\lib&quot; 
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected init-declarator before &quot;CalcCenter&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected `,' or `;' before &quot;CalcCenter&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: variable or field `addServer' declared void
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: `CalcCenter' was not declared in this scope
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before ',' token
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before &quot;const&quot;
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: initializer expression list treated as compound expression
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: expected `,' or `...' before '&amp;' token
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: ISO C++ forbids declaration of `CalcCenter' with no type
</code></pre>
<p>und so weiter...</p>
<p>Die erste Compiler Meldung ist die Wichtigste.<br />
Ich hab ne ganze weile nach dem zeugs gegoogelt, ich habe ein paar Hinweise gefunden wie z.B. man soll eher</p>
<pre><code>typedef typename ... ...
</code></pre>
<p>nehmen usw.<br />
hab jetzt einiges probiert, aber bin noch zu keiner Lösung für diesen &quot;typedef&quot; fehler gekommen.<br />
Könnte es an einem Compiler Bug liegen? (Wäre zwar ein bisschen komisch)</p>
<p>Falls sich keine Lösung finden lässt, wäre ich fast gezwungen &quot;#define ... ...&quot; zu verwenden.</p>
<p>Ich bin froh um jeden Hinweis zur Lösung!<br />
Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628717</guid><dc:creator><![CDATA[qbasic16]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:25:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:27:09 GMT]]></title><description><![CDATA[<p>Das typedef isses nicht. Das Problem am fehlenden ;. Das sagt Dir acuh der Compiler:</p>
<pre><code class="language-cpp">struct Disk
{
    int n_hdd;
    int n_cyl;
    int n_sect;
}; //hier...
struct Server
{
    int n_flops;
    Disk disk;
}; //...und hier
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1628719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628719</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:28:17 GMT]]></title><description><![CDATA[<p>qbasic16 schrieb:</p>
<blockquote>
<p>Hier erst mal der wichtigste Teil des Codes:</p>
<pre><code class="language-cpp">//...
#define MBYTES_PER_SECTOR 1 // Makros für Konstanten ist pfui

struct Disk
{
  //...
} // Hier fehlt ein Semikolon
struct Server
{
  //...
} // Hier fehlt ein Semikolon
typedef vector&lt;Server&gt; CalcCenter; // Kein Problem, Folgefehler...
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1628723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628723</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:28:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:29:09 GMT]]></title><description><![CDATA[<p>hehe, das es gleich so einfach ist war eine stille vermutung... <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 />
habs gleich probiert und es funzt.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628726</guid><dc:creator><![CDATA[qbasic16]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:31:40 GMT]]></title><description><![CDATA[<p>Wobei ich mich manchmal schon Frage, wieso der Compiler da nicht mal versucht, eine klarere (kürzer, prägnanter, auf das '}' hinweisend) Ansage zu machen. Das scheint so verdammt oft vorzukommen, dass C# keine Semikolons nach Klassendefinitionsblöcken mehr verlangt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628728</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:31:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:38:25 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Wobei ich mich manchmal schon Frage, wieso der Compiler da nicht mal versucht, eine klarere (kürzer, prägnanter, auf das '}' hinweisend) Ansage zu machen.</p>
</blockquote>
<p>In C/C++ dürfen von Strukturen/Klassen nunmal im gleichen Zug Variablen angelegt werden. Wenn du einen besseren Parser schreiben kannst, nur her damit.</p>
<p>Das ist in C++ durchaus erlaubt:</p>
<pre><code class="language-cpp">struct abc {
} a, b, c; // Daher auch das Semikolon
</code></pre>
<p>Decimad schrieb:</p>
<blockquote>
<p>Das scheint so verdammt oft vorzukommen, dass C# keine Semikolons nach Klassendefinitionsblöcken mehr verlangt.</p>
</blockquote>
<p>C# erlaubt auch keine automatische Variablendeklaration direkt in Folge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628739</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:42:00 GMT]]></title><description><![CDATA[<p>Dass der Compiler das nicht genauer bemängelt liegt vermutlich daran, dass nach der Klassendefinition noch etwas stehen darf, bevor das Semikolon kommt, z.B. Variablennamen:</p>
<pre><code class="language-cpp">class Foo {} f, g;  //definiert eine Klasse Foo und die Variablen f und g von diesem Typ
</code></pre>
<p>Wenn ich mich nicht irre, kann man sogar den Rückgabetyp einer Funktion gleichzeitig mit der Funktion definieren:</p>
<pre><code class="language-cpp">struct fResult {int, bool}  f() {fResult ret = {1, true}; return ret;}
</code></pre>
<p>@OP was du da machst sieht mir stark nach Objektorientiertem C aus. diskCapacity sollte man in C++ z.B. mit ziemlicher Sicherheit zu einer Methode von Disk machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628745</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:45:21 GMT]]></title><description><![CDATA[<p>Naja, ich würde lieber in 1% der Fälle mal etwas nachdenken müssen als in 99% der Fälle 5 Fehlerzeilen für ein fehlendes Semikolon zu bekommen. Ich kann mir echt nicht vorstellen, dass das sooo schwer zu implementieren wäre. Würde ja z.B. schon ein Test auf POD reichen, POD-Strukturen hat man ja oft direkt als Variablendeklaration benutzt, ich könnte mir vorstellen, dass das bei nicht-POD schon nicht mehr so häufig vorkommt.<br />
Versteh mich bitte richtig, mir ist schon klar, dass man ohne irgendwelche (einschränkenden!) Annahmen nicht entscheiden kann, welcher Fall vorliegt. Aber manchmal hilft auch abwägen imho. Weshalb lässt C# das denn nicht mehr zu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628748</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 10:56:51 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Würde ja z.B. schon ein Test auf POD reichen,...</p>
</blockquote>
<p>Was hat bitteschön POD/Nicht-POD damit zu tun? Nur weil die direkte Variablendeklaration bei der Generation die häufig POD verwenden höher ist, ändert dies nichts daran, das eben diese auch bei Nicht-POD ähnlich agieren würden.</p>
<p>Decimad schrieb:</p>
<blockquote>
<p>Weshalb lässt C# das denn nicht mehr zu?</p>
</blockquote>
<p>Eben wegen Fehlervermeidung. Man kann eine Sprache dadurch einfacher machen, das man sie in Features beschneidet (die wie hier zudem nur den Schreibaufwand etwas senken, nicht aber die Lesbarkeit erhöhen)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628761</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 11:14:52 GMT]]></title><description><![CDATA[<p>Was ist denn heute mit deiner Stimmung los? Ich will doch nur darauf hinaus, dass</p>
<p>C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected init-declarator before &quot;CalcCenter&quot;<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:22: error: expected <code>,' or</code>;' before &quot;CalcCenter&quot;<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: variable or field <code>addServer' declared void C:\\Dokumente und Einstellungen\\ich\\Desktop\\cpp\\sn_0809.cpp:24: error:</code>CalcCenter' was not declared in this scope<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before ',' token<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: expected primary-expression before &quot;const&quot;<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:24: error: initializer expression list treated as compound expression<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: expected <code>,' or</code>...' before '&amp;' token<br />
C:\Dokumente und Einstellungen\ich\Desktop\cpp\sn_0809.cpp:26: error: ISO C++ forbids declaration of `CalcCenter' with no type</p>
<p>mir ein bisschen zu viel des guten für ein fehlendes Semikolon ist. Bist du da nicht der Meinung? Sind Fehlermeldungen des Compilers im Iso-Standard vorgeschrieben? Der Compiler könnte doch auch eine Zeile schreiben: Xyz: Possibly missing ';'. Meinetwegen auch durch einen Compilerswitch, der standardmäßig aus ist, aber den ich dann mit Verzücken immer einschalten würde, weil mir praktisch _nie_ die andere Interpretation der Fehlersituation auftritt. POD hat damit zu tun, dass ich in meinem C-Code durchaus noch des öfteren (und was ich von anderen gesehen haben, war da ähnlich) deklaration von Struktur und Klasse in einen Topf geworfen habe. Mir geht es hier, das habe ich auch ganz deutlich ausgedrückt, um, naja, wie soll ich das ausdrücken, die relative Häufigkeit der Ereignisse. <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>
<p>PS: Okay, ich gebe zu, in diesem Falle waren es ja auch 2 Semikolons, aber dennoch änderst sich meine Meinung dadurch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628768</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 11 Dec 2008 11:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef on Thu, 11 Dec 2008 12:38:44 GMT]]></title><description><![CDATA[<p>Also die Meldung mit dem &quot;possibly missing ';'&quot; gibts für den Fall irgendwo, ich meine die beim gcc oder M$-Compiler mal gesehen zu haben - vermutlich wenn man irgendein Warning-Flag setzt oder dergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628823</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 11 Dec 2008 12:38:44 GMT</pubDate></item></channel></rss>