<?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[[gelöst] struct in einem vector speichern, möglich?]]></title><description><![CDATA[<p>Huhu,</p>
<p>ist es möglich ein struct</p>
<pre><code class="language-cpp">struct auto{
    int baujahr;
    Halter h;
    vector&lt;String&gt; reperaturen;
};
</code></pre>
<p>in einem vector zu speichern, also</p>
<pre><code class="language-cpp">vector&lt;auto&gt; autohaus;
</code></pre>
<p>bzw. ich bekomme vom folgende fehlermeldung:</p>
<pre><code>template argument for ‘template&lt;class _Alloc&gt; class std::allocator’ uses local type
</code></pre>
<p>Also meine Frage: Ist sowas möglich und ich habe nur irgendwas falsch gemacht?<br />
(ich möchte eigentlich nicht mein struct in eine Klasse umwandeln, nur wenn es nicht anders geht).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/254025/gelöst-struct-in-einem-vector-speichern-möglich</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 04:32:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/254025.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Nov 2009 17:16:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 21:18:27 GMT]]></title><description><![CDATA[<p>Huhu,</p>
<p>ist es möglich ein struct</p>
<pre><code class="language-cpp">struct auto{
    int baujahr;
    Halter h;
    vector&lt;String&gt; reperaturen;
};
</code></pre>
<p>in einem vector zu speichern, also</p>
<pre><code class="language-cpp">vector&lt;auto&gt; autohaus;
</code></pre>
<p>bzw. ich bekomme vom folgende fehlermeldung:</p>
<pre><code>template argument for ‘template&lt;class _Alloc&gt; class std::allocator’ uses local type
</code></pre>
<p>Also meine Frage: Ist sowas möglich und ich habe nur irgendwas falsch gemacht?<br />
(ich möchte eigentlich nicht mein struct in eine Klasse umwandeln, nur wenn es nicht anders geht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806147</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 21:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:18:58 GMT]]></title><description><![CDATA[<p>gib' deinem struct einen anderen Namen. auto ist reserviert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806149</guid><dc:creator><![CDATA[witte]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:18:58 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:25:04 GMT]]></title><description><![CDATA[<p>du hast recht <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>das hier war nur ein Beispiel...</p>
<p>also der eigentliche Fehler tritt bei z.b.</p>
<pre><code class="language-cpp">struct meinAuto{
    // wie oben
}
</code></pre>
<p>auf!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806153</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:25:04 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:27:28 GMT]]></title><description><![CDATA[<p>Der Code ist korrekt. Hast du irgendwo ein std::allocator?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806154</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:30:45 GMT]]></title><description><![CDATA[<p>poste doch mal ein compilierbares mini-bsp.</p>
<p>struct == class (mit extrem wenigen unterschieden, die hier nicht relevant sind)</p>
<p>dein gezeigter quellcode sollte wie bereits erwähnt, korrekt sein...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806155</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:34:51 GMT]]></title><description><![CDATA[<blockquote>
<p>struct == class (mit extrem wenigen unterschieden, die hier nicht relevant sind)</p>
</blockquote>
<p>Gibt es mehr als einen Unterschied? <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="😮"
    /> <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806159</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:35:00 GMT]]></title><description><![CDATA[<p>okay, dann ist es wohl doch komplizierter :p</p>
<p>Ich habe sowas:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; void function1(.....){

    struct Meinauto2{
        T wagen;
    };

    vector&lt;MeinAuto&gt; werkstadt;

}
</code></pre>
<p>Entschuldigt, ich dachte das vorherige Bsp reicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806160</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:35:59 GMT]]></title><description><![CDATA[<p>Alter kompletten Code!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806161</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:37:20 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung ist doch ziemlich eindeutig, anscheinend hast du dein struct innerhalb eines Anweisungsblocks lokal definiert. Mit solchen lokalen Typen kann man keine Templates instanzieren. Definier dein struct außerhalb der Funktion.</p>
<p>edit: Jetzt hast du den Code gepostet, während ich noch schrieb. Und meine Vermutung hat sich bestätigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806162</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:37:20 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:36:53 GMT]]></title><description><![CDATA[<p>probier mal typename T wagen;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806163</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:37:59 GMT]]></title><description><![CDATA[<p>hmm... das lässt sich aber aus vielen gründen nicht kompilieren, wenn du wirklich so was verzapft hast...</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct meinwagen
{
  T wagen;
};

void foo()
{
  std::vector&lt; meinwagen&lt;int&gt; &gt; autos;
}
</code></pre>
<p>lässt sich compilieren, funktioniert wie gewünscht, aber ist design-technisch wohl etwas eigenartig^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806166</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 17:41:53 GMT]]></title><description><![CDATA[<p>'Tschuldigung für leicht Offtopic:</p>
<p>typename schrieb:</p>
<blockquote>
<p>probier mal typename T wagen;</p>
</blockquote>
<p>Da steht doch schon im template, dass T ein typename ist. Das explizite typename braucht man um den Compiler zu sagen, dass sowas ein Typenname ist:</p>
<pre><code class="language-cpp">struct foo{
 typedef int bar;
}

template&lt;typename T&gt; beispiel{
 T::bar falsch;             // Das geht nicht, weil der Compiler noch nicht weiß, was T ist
 typename T::bar richtig;   // Daher muss man sagen, das T::bar eine Typbezeichnung sein soll
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1806168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806168</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 10 Nov 2009 17:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 18:02:02 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>hmm... das lässt sich aber aus vielen gründen nicht kompilieren, wenn du wirklich so was verzapft hast...</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct meinwagen
{
  T wagen;
};

void foo()
{
  std::vector&lt; meinwagen&lt;int&gt; &gt; autos;
}
</code></pre>
<p>lässt sich compilieren, funktioniert wie gewünscht, aber ist design-technisch wohl etwas eigenartig^^</p>
<p>bb</p>
</blockquote>
<p>Danke.<br />
eine äußere Definition funktioniert.<br />
Aber ich verstehe noch nicht ganz warum...? Kann mir jemand ein Bsp nennen bei der so eine lokale Definition zum Problem wird?</p>
<p>Was genau findest du eigenartig? bzw was kann ich noch verbessern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806177</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 18:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 18:29:20 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Die Fehlermeldung ist doch ziemlich eindeutig, anscheinend hast du dein struct innerhalb eines Anweisungsblocks lokal definiert. Mit solchen lokalen Typen kann man keine Templates instanzieren. Definier dein struct außerhalb der Funktion.</p>
<p>edit: Jetzt hast du den Code gepostet, während ich noch schrieb. Und meine Vermutung hat sich bestätigt</p>
</blockquote>
<p>Das Problem wurde schon genannt.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806190</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 10 Nov 2009 18:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 18:29:36 GMT]]></title><description><![CDATA[<p>SeppJ hatte doch geschrieben, wieso das nciht geht!?</p>
<blockquote>
<p>Was genau findest du eigenartig? bzw was kann ich noch verbessern?</p>
</blockquote>
<pre><code class="language-cpp">meinwagen&lt;int&gt; wagen;
wagen.wagen = 3;
</code></pre>
<p>z.bsp. ;o)<br />
kann aber auch sein, dass du dein bsp nur so weit vereinfacht hast, dass es fragwürdig erscheint^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806191</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 10 Nov 2009 18:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 18:41:14 GMT]]></title><description><![CDATA[<p>windschief schrieb:</p>
<blockquote>
<p>Danke.<br />
eine äußere Definition funktioniert.<br />
Aber ich verstehe noch nicht ganz warum...? Kann mir jemand ein Bsp nennen bei der so eine lokale Definition zum Problem wird?</p>
<p>Was genau findest du eigenartig? bzw was kann ich noch verbessern?</p>
</blockquote>
<p>Der tiefere Sinn dahinter liegt darin, dass Typen als Templateparameter externe Bindung haben müssen. Ein kurzes, knackiges &quot;Aha&quot;-Beispiel, warum das so sein muss, fällt mir jedoch gerade nicht ein.</p>
<p>Die äußere Definition deiner Klasse kann man auch nochmal in einem namespace verstecken.</p>
<p>Falls du mal lokale Funktoren verwenden willst und das gleiche Problem wie hier bekommst, kannst du das durch eine äußere Wrapperklasse umgehen:<br />
<a href="http://groups.google.com/group/comp.lang.c++.moderated/msg/190eed7804da6a46" rel="nofollow">http://groups.google.com/group/comp.lang.c++.moderated/msg/190eed7804da6a46</a></p>
<p>Mit dem Thema verwandt ist auch die Frage, wie man Stringliterale als Templateargument benutzen kann. Dies ist nämlich aus den gleichen Gründen verboten. Das hatten wir auch kürzlich hier im Forum, inklusive möglicher Abhilfe:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-254003.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-254003.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806197</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 10 Nov 2009 18:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 20:16:44 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>SeppJ hatte doch geschrieben, wieso das nciht geht!?</p>
</blockquote>
<p>theta schrieb:</p>
<blockquote>
<p>Das Problem wurde schon genannt.<br />
Simon</p>
</blockquote>
<p>wieso schon, aber ich wollte noch verstehen warum...</p>
<p>Danke SeppJ.</p>
<p>Also liegt das Problem nicht am dem Vector&lt; struct &gt;, sondern gleich am struct?</p>
<p>Hmmm, aber warum funktioniert das:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; void function1(.....){

    struct Meinauto2{
        T wagen;
    };
}
</code></pre>
<p>also ohne</p>
<pre><code class="language-cpp">vector&lt;MeinAuto2&gt; werkstadt;
</code></pre>
<p>(sorry, ich will es nur wirklich verstehen)</p>
<p>Das man die typename variable T nicht als Zeichenkette oder per Zuweisung übergeben kann leuchtet mir irgendwie ein.</p>
<p>Aber hier habe ich doch eine Funktion die mit mit einer bestimmung von typename aufgerufen wird und im struct befinden sich ja auch nur diese Variablen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806236</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 20:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 20:52:54 GMT]]></title><description><![CDATA[<p>Nochmal:</p>
<p>Das Problem ist: Du darfst keine Templates mit lokalen Klassen instanzieren.</p>
<p>Lokale Klassen sind ok:</p>
<pre><code class="language-cpp">void foo()
{
 struct lokale_klasse{};
}
</code></pre>
<p>Templateinstanzierung ist ok:</p>
<pre><code class="language-cpp">class externe_klasse{};

void foo()
{
 vector&lt;externe_klasse&gt; bar;
}
</code></pre>
<p>Templateinstanzierung mit lokalen Klassen ist nicht ok:</p>
<pre><code class="language-cpp">void foo()
{
 class lokale_klasse{};
 vector&lt;lokale_klasse&gt; bar; // Geht nicht!
}
</code></pre>
<p>Der Fakt, dass deine lokale Klasse zudem von einem Templateparameter der Funktion abhängt, hat überhaupt gar nichts mit dem Problem zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806246</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 10 Nov 2009 20:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] struct in einem vector speichern, möglich? on Tue, 10 Nov 2009 21:17:46 GMT]]></title><description><![CDATA[<p>vielen vielen dank für die ausfürliche Erklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806263</guid><dc:creator><![CDATA[windschief]]></dc:creator><pubDate>Tue, 10 Nov 2009 21:17:46 GMT</pubDate></item></channel></rss>