<?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 von const pointern zu variablen Objekten]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem ich viel gesucht und gelesen habe, bin ich leider nur noch verwirrter geworden, da dies ein ziemlich unschönes Thema in C++ zu sein scheint.</p>
<p>Meine Frage ist:</p>
<p>Weiß jemand ob es möglich ist unter C++11 einen vector von konstanten Pointern auf Objekte anzulegen, ohne die Objekte selbst konstant machen zu müssen?</p>
<p>Also z.B.:</p>
<pre><code>vector&lt;Node* const&gt; nodes;

BOOST_FOREACH(Node* const n, nodes)
{
n-&gt;number = 5;
}
</code></pre>
<p>Soweit ich das verstehe geht das ja so für einzelne pointer;</p>
<pre><code>int* const pY;              // constant pointer to changeable int
*pY = 4;                    // legal - can use pY to modify an int
pY = &amp;someOtherIntVar;      // illegal - can't make pY point anywhere else
</code></pre>
<p>Benutze ich allerdings einen vector, gibt es die unten beschriebenen Fehlermeldungen in new_allocator.h</p>
<p>Grüße<br />
Perhalo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338855/vector-von-const-pointern-zu-variablen-objekten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 03:17:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338855.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Jul 2016 07:41:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 08:32:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem ich viel gesucht und gelesen habe, bin ich leider nur noch verwirrter geworden, da dies ein ziemlich unschönes Thema in C++ zu sein scheint.</p>
<p>Meine Frage ist:</p>
<p>Weiß jemand ob es möglich ist unter C++11 einen vector von konstanten Pointern auf Objekte anzulegen, ohne die Objekte selbst konstant machen zu müssen?</p>
<p>Also z.B.:</p>
<pre><code>vector&lt;Node* const&gt; nodes;

BOOST_FOREACH(Node* const n, nodes)
{
n-&gt;number = 5;
}
</code></pre>
<p>Soweit ich das verstehe geht das ja so für einzelne pointer;</p>
<pre><code>int* const pY;              // constant pointer to changeable int
*pY = 4;                    // legal - can use pY to modify an int
pY = &amp;someOtherIntVar;      // illegal - can't make pY point anywhere else
</code></pre>
<p>Benutze ich allerdings einen vector, gibt es die unten beschriebenen Fehlermeldungen in new_allocator.h</p>
<p>Grüße<br />
Perhalo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502421</guid><dc:creator><![CDATA[Perhalo]]></dc:creator><pubDate>Fri, 15 Jul 2016 08:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 08:29:16 GMT]]></title><description><![CDATA[<p>Und macht &quot;er&quot; das kommentarlos?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502424</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 15 Jul 2016 08:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 08:31:34 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Und macht &quot;er&quot; das kommentarlos?</p>
</blockquote>
<p>Guter Kommentar! Ich schreib das gleich nochmal schöner. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>/usr/include/c++/4.4.7/ext/new_allocator.h:79: error: 'const _Tp* __gnu_cxx::new_allocator&lt;_Tp&gt;::address(const _Tp&amp;) const [with _Tp = SGENode* const]' cannot be overloaded</p>
<p>/usr/include/c++/4.4.7/ext/new_allocator.h:76: error: with '_Tp* __gnu_cxx::new_allocator&lt;_Tp&gt;::address(_Tp&amp;) const [with _Tp = SGENode* const]'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502426</guid><dc:creator><![CDATA[Perhalo]]></dc:creator><pubDate>Fri, 15 Jul 2016 08:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 08:51:58 GMT]]></title><description><![CDATA[<p>g++ 6.1 meint zu</p>
<pre><code class="language-cpp">int main()
{
  int a = 9;
  int* const ptr;// = &amp;a;
  *ptr = 17;
}
</code></pre>
<p>g++ schrieb:</p>
<blockquote>
<p>y.cpp:4:14: error: uninitialized const ‘ptr’ [-fpermissive]<br />
int* const ptr;// = &amp;a;</p>
</blockquote>
<p>Welchen Sinn soll dieses merkwürdige Vectorkonstrukt haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502430</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 15 Jul 2016 08:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 09:01:01 GMT]]></title><description><![CDATA[<p>Der Vektor ist im Projekt vorhanden. Dort sind Knoten einer Graphstruktur enthalten.</p>
<p>Darauf ihn zu ändern habe ich keinen Zugriff. Leider muss ich jetzt an einer späteren Stelle im Code die Member aller Objekte in diesem container ändern.</p>
<p>Wenn du den Kommentar wieder löschst und deinen pointer zuweist, lässt sich dein Code übrigens auch compilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502433</guid><dc:creator><![CDATA[Perhalo]]></dc:creator><pubDate>Fri, 15 Jul 2016 09:01:01 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 09:15:26 GMT]]></title><description><![CDATA[<p>Perhalo schrieb:</p>
<blockquote>
<p>Der Vektor ist im Projekt vorhanden.</p>
</blockquote>
<p>Das bezweifle ich stark. Übersetze mal</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

int main()
{
        std::vector&lt;int* const&gt; v;
}
</code></pre>
<p>Perhalo schrieb:</p>
<blockquote>
<p>Wenn du den Kommentar wieder löschst und deinen pointer zuweist, lässt sich dein Code übrigens auch compilieren.</p>
</blockquote>
<p>Ach</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502437</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 15 Jul 2016 09:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 09:21:26 GMT]]></title><description><![CDATA[<p>einen vector mit konstanten zeigern anzulegen ist genauso gut möglich, wie einen vector mit referenzen anzulegen - in dem fall wäre es wohl std::reference_wrapper.<br />
gibt es für *const aber nicht.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class const_ptr_wrapper {
public:
  // construct/copy/destroy
  const_ptr_wrapper(T* const ptr) noexcept : _ptr{ptr} {}
  const_ptr_wrapper(T&amp;&amp;) = delete;
  const_ptr_wrapper(const const_ptr_wrapper&amp;) noexcept = default; 
  const_ptr_wrapper() : _ptr{nullptr} {} //wozuuu??
  // assignment = default deleted (assignment für ein *const geht nicht)

  operator T* () const noexcept { return _ptr; } //kopie eines *const ist nicht const.
  T* get() const noexcept { return _ptr; } 

private:
  T* const _ptr;
};

//...
std::vector&lt;const_ptr_wrapper&lt;int&gt;&gt; vector;
int i = 42;
vector.push_back(&amp;i);

//fülle einen vector mit 42 nie mehr änderbaren nullptr...
vector.resize(42);
</code></pre>
<p>bloß wozu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502440</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Fri, 15 Jul 2016 09:21:26 GMT</pubDate></item><item><title><![CDATA[Reply to vector von const pointern zu variablen Objekten on Fri, 15 Jul 2016 09:24:12 GMT]]></title><description><![CDATA[<p>Aufpassen mit den C++-Standardbiblitheken und const</p>
<p>z.B. kann (VS2010)VS2015</p>
<p>const std::vector&lt;const int&gt; blub = {10,20,30};</p>
<p>libstdc++ 6.1 kann es nicht</p>
<p>mal unabhängig von dem Sinn</p>
<p>es gibt Lücken in der Anpassung für Move-Semantik</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502441</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Fri, 15 Jul 2016 09:24:12 GMT</pubDate></item></channel></rss>