<?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[Probleme mit einem Zeiger in &amp;quot;private&amp;quot;]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe hier eine Klasse deren Standardkonstruktor ein Pointer übergeben wird. Dieser Pointer zeigt auf einen Vektor. Der Vektor wiederum nimmt Pointer des Typs &quot;Bar_t&quot; auf.</p>
<pre><code class="language-cpp">class Foo_t {

    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);
    ...
};
</code></pre>
<p>Weiter besitzt die Klasse einen eigenen Pointer in &quot;private&quot;. Dieser Pointer ist vom selben Typ wie der o.g. Pointer.</p>
<pre><code class="language-cpp">class Foo_t {

    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);
    ...
    private:
        std::vector&lt;Bar_t *&gt; *itsBar;
};
</code></pre>
<p>Der Standardkonstruktor kopiert den übergebten Pointer auf den Pointer aus &quot;private&quot;.</p>
<pre><code class="language-cpp">Foo_t::Foo_t(std::vector&lt;Bar_t *&gt; *bar) {

	itsBar = bar;
}
</code></pre>
<p>Soweit ist alles Ok. Aber die Klasse besitzt noch eine Methode in &quot;public&quot; die auf den Pointer aus &quot;private&quot; zugreift. Die vollständige Klasse sieht dann so aus:</p>
<pre><code class="language-cpp">class Foo_t {
    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);

    public:
        std::string GetBar();

    private:
        std::vector&lt;Bar_t *&gt; *itsBar;
};
</code></pre>
<p>Und die vollständigen Klassendeklarationen sehen so aus:</p>
<pre><code class="language-cpp">Foo_t::Foo_t(std::vector&lt;Bar_t *&gt; *bar) {

	itsBar = bar;

Foo_t::~Foo_t() {

}

std::string
Foo_t::GetBar() {

    std::cout &lt;&lt; &quot;Die Adresse des Pointers \&quot;itsBar\&quot; lautet: &quot;
              &lt;&lt; &amp;itsBar &lt;&lt; std::endl;
}
</code></pre>
<p>Kompiliere ich das ganze mit dem GNU C++ Compiler bekomme ich folgende Fehlermeldung:</p>
<blockquote>
<p>Fehler: »itsBar« wurde in diesem Gültigkeitsbereich nicht definiert</p>
</blockquote>
<p>Die dabei ausgegebene und hier nicht aufgeführte Zeilennummer bezieht sich auf GetBar().</p>
<p>Warum kann der Standardkonstruktor dem Pointer auf eine übergebene Adresse biegen aber GetBar() nicht einmal die Pointeradresse ausgeben?</p>
<p>Für jeden Hinweis dankbar.</p>
<p>Goran</p>
<p>public:<br />
std::string GetBlub();</p>
<p>private:<br />
std::vector&lt;vector&lt;Bla_t&gt; *&gt; *itsBla;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175718/probleme-mit-einem-zeiger-in-quot-private-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 08:43:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175718.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Mar 2007 14:02:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit einem Zeiger in &amp;quot;private&amp;quot; on Tue, 13 Mar 2007 14:46:58 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe hier eine Klasse deren Standardkonstruktor ein Pointer übergeben wird. Dieser Pointer zeigt auf einen Vektor. Der Vektor wiederum nimmt Pointer des Typs &quot;Bar_t&quot; auf.</p>
<pre><code class="language-cpp">class Foo_t {

    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);
    ...
};
</code></pre>
<p>Weiter besitzt die Klasse einen eigenen Pointer in &quot;private&quot;. Dieser Pointer ist vom selben Typ wie der o.g. Pointer.</p>
<pre><code class="language-cpp">class Foo_t {

    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);
    ...
    private:
        std::vector&lt;Bar_t *&gt; *itsBar;
};
</code></pre>
<p>Der Standardkonstruktor kopiert den übergebten Pointer auf den Pointer aus &quot;private&quot;.</p>
<pre><code class="language-cpp">Foo_t::Foo_t(std::vector&lt;Bar_t *&gt; *bar) {

	itsBar = bar;
}
</code></pre>
<p>Soweit ist alles Ok. Aber die Klasse besitzt noch eine Methode in &quot;public&quot; die auf den Pointer aus &quot;private&quot; zugreift. Die vollständige Klasse sieht dann so aus:</p>
<pre><code class="language-cpp">class Foo_t {
    public:
        Foo_t(std::vector&lt;Bar_t *&gt; *);

    public:
        std::string GetBar();

    private:
        std::vector&lt;Bar_t *&gt; *itsBar;
};
</code></pre>
<p>Und die vollständigen Klassendeklarationen sehen so aus:</p>
<pre><code class="language-cpp">Foo_t::Foo_t(std::vector&lt;Bar_t *&gt; *bar) {

	itsBar = bar;

Foo_t::~Foo_t() {

}

std::string
Foo_t::GetBar() {

    std::cout &lt;&lt; &quot;Die Adresse des Pointers \&quot;itsBar\&quot; lautet: &quot;
              &lt;&lt; &amp;itsBar &lt;&lt; std::endl;
}
</code></pre>
<p>Kompiliere ich das ganze mit dem GNU C++ Compiler bekomme ich folgende Fehlermeldung:</p>
<blockquote>
<p>Fehler: »itsBar« wurde in diesem Gültigkeitsbereich nicht definiert</p>
</blockquote>
<p>Die dabei ausgegebene und hier nicht aufgeführte Zeilennummer bezieht sich auf GetBar().</p>
<p>Warum kann der Standardkonstruktor dem Pointer auf eine übergebene Adresse biegen aber GetBar() nicht einmal die Pointeradresse ausgeben?</p>
<p>Für jeden Hinweis dankbar.</p>
<p>Goran</p>
<p>public:<br />
std::string GetBlub();</p>
<p>private:<br />
std::vector&lt;vector&lt;Bla_t&gt; *&gt; *itsBla;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244706</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Tue, 13 Mar 2007 14:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit einem Zeiger in &amp;quot;private&amp;quot; on Tue, 13 Mar 2007 14:37:25 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Foo_t::Foo_t(std::vector&lt;Bar_t *&gt; *bar) {

	itsBar = bar;

// &lt;-- C&amp;P-Fehler oder fehlt hier wirklich das } ?!

Foo_t::~Foo_t() {

}

std::string
Foo_t::GetBar() {

    std::cout &lt;&lt; &quot;Die Adresse des Pointers \&quot;itsBar\&quot; lautet: &quot;
              &lt;&lt; &amp;itsBar &lt;&lt; std::endl;
}
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1244726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244726</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 13 Mar 2007 14:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit einem Zeiger in &amp;quot;private&amp;quot; on Tue, 13 Mar 2007 14:38:33 GMT]]></title><description><![CDATA[<p>Das war ein C&amp;P Fehler. <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244728</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Tue, 13 Mar 2007 14:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit einem Zeiger in &amp;quot;private&amp;quot; on Tue, 13 Mar 2007 15:27:21 GMT]]></title><description><![CDATA[<p>Ist das wirklich der einzige Fehler, den der gcc ausspuckt? Kann ich mir kaum vorstellen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244768</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 13 Mar 2007 15:27:21 GMT</pubDate></item></channel></rss>