<?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[Referenz auf auf Objekt, als Funktionsparameter]]></title><description><![CDATA[<p>Hallo! <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>
<p>Wenn ich ein Objekt in einer Funktion verwenden möchte und nicht kopieren möchte, überge ich es als Referenz.</p>
<pre><code>_ErrType	dosomething	(string&amp; file, _IndexTree&amp; indexTree);
</code></pre>
<p>Aber wie bekomme ich eine Referenz aus einer Funktion heraus? ohne return val?</p>
<p>also z.b.:</p>
<pre><code>_ErrType		_IndexTree	::	searchSimple(_IndexCluster* ic, _u32 block) {
		if(m_MainCluster.at(0).getSize() &gt;= block) {
			ic = &amp;(m_MainCluster.at(0));
			return _ErrType::HasMatch;
		} else {
			return _ErrType::NoMatch;
		}
}
// Das macht z.b. gar nichts. Der übergebene Pointer ic, ist nach dem Funktionsaufruf immer noch null. 
// Verständlich... ist irgendwie call bei value für eine Adresse...
</code></pre>
<pre><code>_ErrType		_IndexTree	::	searchSimple(_IndexCluster&amp; ic, _u32 block) {
		if(m_MainCluster.at(0).getSize() &gt;= block) {
			ic = m_MainCluster.at(0);
			return _ErrType::HasMatch;
		} else {
			return _ErrType::NoMatch;
		}
}
// Und das hier kopiert mir das ganze m_MainCluster.at(0) in die referenz ic.
// Ich hab nach der Funktion zwar den Baum, aber hab auch eine Sekunde unnötig verschenkt beim koppieren...
</code></pre>
<p>ich möchte letztendlich sowas machen:</p>
<pre><code>_IndexCluster* head;
		if(m_IndexTree.searchSimple(head, blockNum) == _ErrType::HasMatch) {
			head-&gt;WhatEverfunction();
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/324656/referenz-auf-auf-objekt-als-funktionsparameter</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 08:20:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324656.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Mar 2014 06:52:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 06:52:39 GMT]]></title><description><![CDATA[<p>Hallo! <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>
<p>Wenn ich ein Objekt in einer Funktion verwenden möchte und nicht kopieren möchte, überge ich es als Referenz.</p>
<pre><code>_ErrType	dosomething	(string&amp; file, _IndexTree&amp; indexTree);
</code></pre>
<p>Aber wie bekomme ich eine Referenz aus einer Funktion heraus? ohne return val?</p>
<p>also z.b.:</p>
<pre><code>_ErrType		_IndexTree	::	searchSimple(_IndexCluster* ic, _u32 block) {
		if(m_MainCluster.at(0).getSize() &gt;= block) {
			ic = &amp;(m_MainCluster.at(0));
			return _ErrType::HasMatch;
		} else {
			return _ErrType::NoMatch;
		}
}
// Das macht z.b. gar nichts. Der übergebene Pointer ic, ist nach dem Funktionsaufruf immer noch null. 
// Verständlich... ist irgendwie call bei value für eine Adresse...
</code></pre>
<pre><code>_ErrType		_IndexTree	::	searchSimple(_IndexCluster&amp; ic, _u32 block) {
		if(m_MainCluster.at(0).getSize() &gt;= block) {
			ic = m_MainCluster.at(0);
			return _ErrType::HasMatch;
		} else {
			return _ErrType::NoMatch;
		}
}
// Und das hier kopiert mir das ganze m_MainCluster.at(0) in die referenz ic.
// Ich hab nach der Funktion zwar den Baum, aber hab auch eine Sekunde unnötig verschenkt beim koppieren...
</code></pre>
<p>ich möchte letztendlich sowas machen:</p>
<pre><code>_IndexCluster* head;
		if(m_IndexTree.searchSimple(head, blockNum) == _ErrType::HasMatch) {
			head-&gt;WhatEverfunction();
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2391175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391175</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Wed, 26 Mar 2014 06:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 07:03:25 GMT]]></title><description><![CDATA[<p>_Wenn _du _den. _Pointer _ãndern<br />
_willst, _musst _du _halt<br />
_den _Pointer als _Referenz übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391177</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 26 Mar 2014 07:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 07:17:18 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>_Wenn _du _den. _Pointer _ãndern<br />
_willst, _musst _du _halt<br />
_den _Pointer als _Referenz übergeben.</p>
</blockquote>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391179</guid><dc:creator><![CDATA[cl90]]></dc:creator><pubDate>Wed, 26 Mar 2014 07:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 07:26:22 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28236">@cl90</a>:</strong> Unterstrich+Großbuchstabe am Anfang ist reserviert -&gt; darfst Du nicht verwenden.<br />
Genauso doppelte Unterstriche und allgemein Unterstrich am Anfang im globalen Namensraum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391182</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 26 Mar 2014 07:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 07:42:14 GMT]]></title><description><![CDATA[<p>Ja, das haben wir ihm in einem anderen Thread auch schon gesagt. Aber in seinem Projektteam ist das so vorgeschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391183</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 26 Mar 2014 07:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 07:59:03 GMT]]></title><description><![CDATA[<p>m(</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391186</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Wed, 26 Mar 2014 07:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 08:47:18 GMT]]></title><description><![CDATA[<pre><code>_ErrType        _IndexTree  ::  searchSimple(_IndexCluster* ic, _u32 block) {
        if(m_MainCluster.at(0).getSize() &gt;= block) {
            ic = &amp;(m_MainCluster.at(0));
            return _ErrType::HasMatch;
        } else {
            return _ErrType::NoMatch;
        }
}
</code></pre>
<p>Diese konkrete Funktion lässt sich umschreiben, ohne Referenzen auf Zeiger zu verwenden. Und zwar in dem du auf eine Enumeration verzichtest und den Zeiger zurückgibst. Für den Fall, dass es keinen Match gibt, gibst du einen Nullzeiger zurück.</p>
<pre><code>_IndexCluster* _IndexTree::searchSimple( _u32 block )
{
        if(m_MainCluster.at(0).getSize() &gt;= block)
            return &amp;m_MainCluster.at(0);

        return nullptr; // Bzw. NULL in C++03
}
</code></pre>
<p>Und dann schreibst du einfach</p>
<pre><code>if( auto head = m_IndexTree.searchSimple(blockNum) ) // Oder _IndexCluster* in C++03
   head-&gt;WhatEverfunction();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2391196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391196</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Wed, 26 Mar 2014 08:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 09:47:08 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ja, das haben wir ihm in einem anderen Thread auch schon gesagt. Aber in seinem Projektteam ist das so vorgeschrieben.</p>
</blockquote>
<p>Ein Kündigungsgrund, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2391205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391205</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 26 Mar 2014 09:47:08 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz auf auf Objekt, als Funktionsparameter on Wed, 26 Mar 2014 10:39:46 GMT]]></title><description><![CDATA[<p>Vielleicht sind sie ja genau dafür reserviert? <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/2391213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2391213</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 26 Mar 2014 10:39:46 GMT</pubDate></item></channel></rss>