<?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[Zeiger auf Vektor von Objekt]]></title><description><![CDATA[<p>So...und noch etwas <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich besitze ein Objekt namens Node. Dieses Objekt enthält einen Vektor m_position_dblvec.</p>
<p><strong>Node.h</strong></p>
<pre><code class="language-cpp">class Node
{
private:
	std::vector&lt;double&gt; m_position_dblvec;
	std::vector&lt;double&gt;* ptr_m_position_dbl;
public:
        std::vector&lt;double&gt;* positionOfNode(void);
}
</code></pre>
<p><strong>Node.cpp</strong></p>
<pre><code class="language-cpp">Node::Node(GNG_Parameters &amp;gng_parameters, NodePool &amp;nodepool)
{
	// Initialize Positions of Array
	for(int i = 0; i &lt; *gng_parameters.getDimensionOfInputData(); ++i)
	{ 
		m_position_dblvec.push_back(createHazardValues());	
	}
        ptr_m_position_dbl = &amp;m_position_dblvec;

}
</code></pre>
<p>Innerhalb meines Codes können viele dieser Nodes erzeugt werden (und auch wieder gelöscht). Ich kann von anderen Klassen aus auf ein Node-Objekt zugreifen und eben auf diesen Vektor zugreifen.</p>
<p>Bisher mache ich es wie folgt:</p>
<pre><code class="language-cpp">std::vector&lt;double&gt;* Node::positionOfNode(void)
{
	return ptr_m_position_dbl;
}
</code></pre>
<p>Erhalte also einen Pointer auf den Vektor.<br />
Wie kann ich nun über diesen Vektor, von dem ich ja jetzt nur einen Pointer besitze iterieren?</p>
<p>Wieso kann ich nicht einfach eine Referenz auf den Vektor übergeben? Würde dies gehen, oder ist es nicht möglich wenn ich während der Laufzeit viele solcher Nodes erstelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224844/zeiger-auf-vektor-von-objekt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 04:20:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224844.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 Oct 2008 17:44:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Vektor von Objekt on Wed, 15 Oct 2008 17:44:59 GMT]]></title><description><![CDATA[<p>So...und noch etwas <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich besitze ein Objekt namens Node. Dieses Objekt enthält einen Vektor m_position_dblvec.</p>
<p><strong>Node.h</strong></p>
<pre><code class="language-cpp">class Node
{
private:
	std::vector&lt;double&gt; m_position_dblvec;
	std::vector&lt;double&gt;* ptr_m_position_dbl;
public:
        std::vector&lt;double&gt;* positionOfNode(void);
}
</code></pre>
<p><strong>Node.cpp</strong></p>
<pre><code class="language-cpp">Node::Node(GNG_Parameters &amp;gng_parameters, NodePool &amp;nodepool)
{
	// Initialize Positions of Array
	for(int i = 0; i &lt; *gng_parameters.getDimensionOfInputData(); ++i)
	{ 
		m_position_dblvec.push_back(createHazardValues());	
	}
        ptr_m_position_dbl = &amp;m_position_dblvec;

}
</code></pre>
<p>Innerhalb meines Codes können viele dieser Nodes erzeugt werden (und auch wieder gelöscht). Ich kann von anderen Klassen aus auf ein Node-Objekt zugreifen und eben auf diesen Vektor zugreifen.</p>
<p>Bisher mache ich es wie folgt:</p>
<pre><code class="language-cpp">std::vector&lt;double&gt;* Node::positionOfNode(void)
{
	return ptr_m_position_dbl;
}
</code></pre>
<p>Erhalte also einen Pointer auf den Vektor.<br />
Wie kann ich nun über diesen Vektor, von dem ich ja jetzt nur einen Pointer besitze iterieren?</p>
<p>Wieso kann ich nicht einfach eine Referenz auf den Vektor übergeben? Würde dies gehen, oder ist es nicht möglich wenn ich während der Laufzeit viele solcher Nodes erstelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599555</guid><dc:creator><![CDATA[redbomber]]></dc:creator><pubDate>Wed, 15 Oct 2008 17:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Vektor von Objekt on Wed, 15 Oct 2008 18:20:05 GMT]]></title><description><![CDATA[<p>Du scheinst dich in letzter Zeit ein wenig oft mit diesen Nodes herumzuschlagen. <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="😉"
    /><br />
Bist du dir sicher, dass die STL (z.B. <code>std::list</code> ) dir nicht behilflich sein kann?</p>
<p>Zu deinem Problem: Willst du wirklich einen Zeiger auf den <code>std::vector</code> zurückgeben? Damit kann man alles damit anstellen. Ich würde den Zugriff beschränken, und z.B. in Lese- und Schreibzugriff aufteilen. Eine Referenz wäre schöner, aber man hätte immer noch das gleiche Problem mit den zu lockeren Zugriffrechten.</p>
<p>Aber wieso hast du in der Klasse einen <code>std::vector</code> als Member und einen Zeiger darauf? Wenn du unbedingt einen Zeiger zurückgeben willst, was ich dir nicht rate, kannst du das ja mit dem Adressoperator tun.</p>
<p>Du solltest dir vielleicht auch die ungarische Notation ein bisschen abgewöhnen, <code>ptr_m_position_dbl</code> ist beispielsweise hässlich zu lesen und sagt nicht mehr über die Variable aus, als man durch Darüberfahren mit der Maus erfahren würde (bei modernen IDEs). Denk dir lieber einen aussagekräftigeren Namen aus, der auch etwas über den Inhalt verrät, dafür kannst du <code>dbl</code> , <code>vector</code> und <code>ptr</code> raus lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599574</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Vektor von Objekt on Wed, 15 Oct 2008 18:38:41 GMT]]></title><description><![CDATA[<p>Jo da hast du recht, sieht aus wie kraut und rüben mit der Notation...</p>
<p>Ich lasse mir jetzt eine const Referenz auf den Vector zurück geben.<br />
Aber auch da ist eine liste ja mal wieder sinnvoller...werde also auch hier die Liste einsetzen, da ich ja keinen indexzugriff auf die Elemente benötige.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1599585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599585</guid><dc:creator><![CDATA[redbomber]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Vektor von Objekt on Wed, 15 Oct 2008 18:45:13 GMT]]></title><description><![CDATA[<p>redbomber schrieb:</p>
<blockquote>
<p>Ich lasse mir jetzt eine const Referenz auf den Vector zurück geben.</p>
</blockquote>
<p>Ich weiss nicht, ob das so eine gute Idee ist. Damit ist nur garantiert, dass der Container von aussen nicht verändert wird. Aber es können alle Elemente gelesen werden. Brauchst du das? Oder willst du nur gerade die Position ausgeben, bei der ein Iterator steht? Dann wäre es vielleicht angebracht, einen Iterator als Member zu speichern und dann das entsprechende Element zurückzugeben. Aber bevor ich hier weiterrate, könntest du ein wenig ausführlicher erläutern, worauf du von ausserhalb der Klasse genau zugreifen willst?</p>
<p>redbomber schrieb:</p>
<blockquote>
<p>Aber auch da ist eine liste ja mal wieder sinnvoller...werde also auch hier die Liste einsetzen, da ich ja keinen indexzugriff auf die Elemente benötige.</p>
</blockquote>
<p>Du meinst sicher <code>std::list</code> ? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1599594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1599594</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 15 Oct 2008 18:45:13 GMT</pubDate></item></channel></rss>