<?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[vector&amp;lt;Foo*&amp;gt; als Parameter für vector&amp;lt;const Foo*&amp;gt; übergeben]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich hab einen std::vector mit Zeigern drin...<br />
Zudem eine Funktion, die eine Referen auf einen vector mit const Zeigern<br />
erwartet.</p>
<p>Warum kann ich den Vektor nicht übergeben, immerhin hab ich ja sogar mehr Rechte?<br />
Wie krieg ich das hin?</p>
<p>Beispiel-Code:</p>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &quot;Foo.h&quot;

int main(void){
	std::vector&lt;Foo*&gt; foos;
	Foo::method(foos);
    return 1;
}
</code></pre>
<p>Foo.h:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

class Foo {
public:
	static void method(std::vector&lt;const Foo*&gt;&amp; o);
};
</code></pre>
<p>Foo.cpp:</p>
<pre><code class="language-cpp">#include &quot;Foo.h&quot;

void Foo::method(std::vector&lt;const Foo*&gt;&amp; o){
}
</code></pre>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/182581/vector-lt-foo-gt-als-parameter-für-vector-lt-const-foo-gt-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 23:41:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182581.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 May 2007 21:33:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector&amp;lt;Foo*&amp;gt; als Parameter für vector&amp;lt;const Foo*&amp;gt; übergeben on Sat, 26 May 2007 21:34:02 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Ich hab einen std::vector mit Zeigern drin...<br />
Zudem eine Funktion, die eine Referen auf einen vector mit const Zeigern<br />
erwartet.</p>
<p>Warum kann ich den Vektor nicht übergeben, immerhin hab ich ja sogar mehr Rechte?<br />
Wie krieg ich das hin?</p>
<p>Beispiel-Code:</p>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &quot;Foo.h&quot;

int main(void){
	std::vector&lt;Foo*&gt; foos;
	Foo::method(foos);
    return 1;
}
</code></pre>
<p>Foo.h:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

class Foo {
public:
	static void method(std::vector&lt;const Foo*&gt;&amp; o);
};
</code></pre>
<p>Foo.cpp:</p>
<pre><code class="language-cpp">#include &quot;Foo.h&quot;

void Foo::method(std::vector&lt;const Foo*&gt;&amp; o){
}
</code></pre>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292884</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 26 May 2007 21:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;Foo*&amp;gt; als Parameter für vector&amp;lt;const Foo*&amp;gt; übergeben on Sat, 26 May 2007 21:51:51 GMT]]></title><description><![CDATA[<pre><code>Foo::method((vector&lt;const Foo*&gt;&amp;)foos);
</code></pre>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1292894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292894</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Sat, 26 May 2007 21:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;Foo*&amp;gt; als Parameter für vector&amp;lt;const Foo*&amp;gt; übergeben on Sat, 26 May 2007 21:55:45 GMT]]></title><description><![CDATA[<p>Oh shit...</p>
<p>Nen einfacher cast reicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
*Versink im Erdboden*</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1292897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1292897</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 26 May 2007 21:55:45 GMT</pubDate></item><item><title><![CDATA[Reply to vector&amp;lt;Foo*&amp;gt; als Parameter für vector&amp;lt;const Foo*&amp;gt; übergeben on Sun, 27 May 2007 14:01:02 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Oh shit...</p>
<p>Nen einfacher cast reicht</p>
</blockquote>
<p>Reicht um undefiniertes Verhalten herbeizuführen. Für mehr aber auch nicht. std::vector&lt;T*&gt; und std::vector&lt;const T*&gt; sind zwei unverwandte Typen und der Zugriff auf ein Objekt des einen Typs über eine Referenz vom anderen Typ ist illegal.</p>
<p>Nur mal so als Beispiel:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class Vector {
public:
  void f() const {
    cout &lt;&lt; &quot;Alles fein!&quot; &lt;&lt; endl;
  }
};

template &lt;class T&gt;
class Vector&lt;const T*&gt; {
public:
  void f() const {
    cout &lt;&lt; &quot;Ding-Dong, die Hex ist tot!&quot;  &lt;&lt; endl;
  }
};

void f(const Vector&lt;const int*&gt;&amp; v) {
  v.f();
}

int main() {
  Vector&lt;int*&gt; v;
  v.f();
  f((const Vector&lt;const int*&gt;&amp;)v);
}
</code></pre>
<p>Entweder du änderst die Sigantur deiner Funktion oder du steigst auf einen vector&lt;const Foo*&gt; um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1293112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1293112</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 27 May 2007 14:01:02 GMT</pubDate></item></channel></rss>