<?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[Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED]]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem (minimal Beispiel):</p>
<pre><code class="language-cpp">// myFunc nimmt einen Pointer auf ObjA und gibt Pointer auf ObjB zur&amp;uuml;ck
ObjB * myFunc(ObjA * o) {
    // irgendwas kommt hier noch...
    return &amp;(stdVector-&gt;at(o-&gt;nr()));
}

// meine Hauptfunktion
void function main() {
    ObjA * o1 = &amp;(myObjVector-&gt;at(0));  // o1 ist also pointer, und zeigt auf das object im std:vector an stelle 0.
    ObjB * o2 = myFunc(o1);            // nun übergebe ich an myFunc o1 (ist ja Pointer auf ObjA) und das sollte dann o2 zugewisen werden.
}
</code></pre>
<p>Der compiler beschwert sich nun, dass es keine Funktion gäbe, auf die der Aufruf</p>
<pre><code class="language-cpp">myFunc(ObjA*&amp;)
</code></pre>
<p>passt. Aber das mache ich doch auch nicht. Ich übergebe ja nicht ObjA&amp; sondern eben nur ObjA*. Und das passt zur signatur von myFunc. Und wenn ich den Umweg über den Pointer nicht mache, sondern direkt</p>
<pre><code class="language-cpp">myFunc(&amp;(myObjVector-&gt;at(0)));
</code></pre>
<p>dann geht es ja auch...Übergibt C++ pointer vllt grundsätzlich als Referenz und hängt darum das &amp; dran?</p>
<p>Wer weiß rat? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/261926/egtl-was-simples-aber-es-will-mir-nicht-in-den-kopf-updated</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:48:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261926.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Feb 2010 15:53:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:51:37 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem (minimal Beispiel):</p>
<pre><code class="language-cpp">// myFunc nimmt einen Pointer auf ObjA und gibt Pointer auf ObjB zur&amp;uuml;ck
ObjB * myFunc(ObjA * o) {
    // irgendwas kommt hier noch...
    return &amp;(stdVector-&gt;at(o-&gt;nr()));
}

// meine Hauptfunktion
void function main() {
    ObjA * o1 = &amp;(myObjVector-&gt;at(0));  // o1 ist also pointer, und zeigt auf das object im std:vector an stelle 0.
    ObjB * o2 = myFunc(o1);            // nun übergebe ich an myFunc o1 (ist ja Pointer auf ObjA) und das sollte dann o2 zugewisen werden.
}
</code></pre>
<p>Der compiler beschwert sich nun, dass es keine Funktion gäbe, auf die der Aufruf</p>
<pre><code class="language-cpp">myFunc(ObjA*&amp;)
</code></pre>
<p>passt. Aber das mache ich doch auch nicht. Ich übergebe ja nicht ObjA&amp; sondern eben nur ObjA*. Und das passt zur signatur von myFunc. Und wenn ich den Umweg über den Pointer nicht mache, sondern direkt</p>
<pre><code class="language-cpp">myFunc(&amp;(myObjVector-&gt;at(0)));
</code></pre>
<p>dann geht es ja auch...Übergibt C++ pointer vllt grundsätzlich als Referenz und hängt darum das &amp; dran?</p>
<p>Wer weiß rat? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1861362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861362</guid><dc:creator><![CDATA[marktwain]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:02:22 GMT]]></title><description><![CDATA[<p>main sollte int zurückgeben, nicht void.<br />
Versuch es mal in das hier zu ändern</p>
<pre><code class="language-cpp">ObjB&amp; myFunc(ObjA&amp; o)
</code></pre>
<pre><code class="language-cpp">ObjA* o1 = myObjVector-&gt;at(0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1861364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861364</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:04:38 GMT]]></title><description><![CDATA[<p>Das sollte eigentlich richtig sein. Wenn ich deinen (unvollständigen) Code zu etwas compilierbarem ergänze, funktioniert es auch:</p>
<pre><code class="language-cpp">class ObjB{};
class ObjA{};

ObjB *globalObjBPointer;  // Bloß zum Testen
ObjA globalObjA;

ObjB * myFunc(ObjA * o) {
    return globalObjBPointer;
}

void function() {
    ObjA * o1 = &amp;(globalObjA); 
    ObjB * o2 = myFunc(o1);    
}
</code></pre>
<p>Kannst du bitte ein minimales Beispiel bringen, dass den Fehler reproduziert? Und die genaue Fehlermeldung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861365</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:04:38 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:05:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void function main() {
</code></pre>
<p>was ist denn &quot;function&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861366</guid><dc:creator><![CDATA[Mr X]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:07:44 GMT]]></title><description><![CDATA[<p>Mr X schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void function main() {
</code></pre>
<p>was ist denn &quot;function&quot;?</p>
</blockquote>
<p>evtl ein</p>
<pre><code class="language-cpp">#define function
</code></pre>
<p>vllt hats ihm so besser gefallen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1861369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861369</guid><dc:creator><![CDATA[aus der coder hölle]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:41:07 GMT]]></title><description><![CDATA[<p>Hm, ok, also erstmal danke soweit.</p>
<blockquote>
<p>Was ist denn function?</p>
<pre><code class="language-cpp">void function main() {
</code></pre>
</blockquote>
<p>Wollte die funktion erst function1 nennen...hab mich dann spontan umentschieden. <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>Ok, ich glaube mein Beispiel ist irgendwie schlecht. Hier einfach mal den Code:</p>
<pre><code class="language-cpp">MTAPFTau * pk01Analysis::bestMatch(MTAGenTau * gt, MTAPFTaus * pftaus, std::set&lt;unsigned int&gt; * blacklist,  double threshold) {
	double phi1 = gt-&gt;p4.phi();
	double eta1 = gt-&gt;p4.eta();
	double dPhi;
	double dEta;
	double tmp;

	double min 		= -1;
	int    id2use	= -1;

	threshold *= threshold; 			

	for (unsigned int i = 0; i &lt; pftaus-&gt;size(); i++) {
		dPhi = phi1 - (pftaus-&gt;at(i)).p4.phi();
		dEta = eta1 - (pftaus-&gt;at(i)).p4.eta();
		tmp = dPhi * dPhi + dEta * dEta;
		if ( (tmp &lt; min) &amp;&amp; (tmp &lt; threshold) &amp;&amp; (blacklist-&gt;find(i) == blacklist-&gt;end()) ) {
			// ok, this one is closer to threshold.
			min = tmp;
			id2use = i;
		}
	}

	if (id2use &gt;= 0) {
		blacklist-&gt;insert(id2use);
		return &amp;(pftaus-&gt;at(id2use));	
	} else {
		return NULL;
	}
}

void pk01Analysis::processEvent(MTAPFTaus * pftaus, MTAGenTaus * gentaus) {
	if (debug)
		std::cout &lt;&lt; &quot;processEvent\n&quot;;

	// We should exit, if we do not have 2 GenTaus, and less than 2 Reco Taus
	if ( (pftaus-&gt;size() &lt; 2) || (gentaus-&gt;size() != 2) ) {
		if (debug)
			std::cout &lt;&lt; &quot;Dropping Event: Not enough GEN/RECO taus or tau count does not match [&quot; &lt;&lt; gentaus-&gt;size() &lt;&lt; &quot;/&quot; &lt;&lt; pftaus-&gt;size() &lt;&lt; &quot;].\n&quot;;
	} else {
		MTAGenTau* gt1 = &amp;(gentaus-&gt;at(0));	
		MTAGenTau* gt2 = &amp;(gentaus-&gt;at(1));

		std::set&lt;unsigned int&gt; blacklist;
		MTAPFTau* rt1; // = bestMatch(gt1, pftaus, blacklist);
		MTAPFTau* rt2; // = bestMatch(gt1, pftaus, blacklist);

		rt1 = bestMatch(gt1, pftaus, blacklist, 2.0); // Hier gibts den Fehler!!

		if ( rt1 &amp;&amp; rt2 ) {
			// rt[1,2] = best Reco Taus matching the GEN Taus
			// we can do some magic here...

		} else {
			if (debug)
				std::cout &lt;&lt; &quot;Dropping Event: Can not match two jets with GENTaus.\n&quot;;
		}
	}

	if (debug)
		std::cout &lt;&lt; &quot;end of processEvent\n&quot;;
}
</code></pre>
<p>Die genaue Fehlermeldung:</p>
<pre><code>g++ -O3 -fPIC -DPIC -ansi -Wall -Woverloaded-virtual -Wno-non-virtual-dtor -D_GNU_SOURCE -pthread -m32 -I/wlcg/sw/cms/slc4_ia32_gcc345/lcg/root/5.22.00d-cms4/include -I /storage/6/krauss/CMSSW_3_3_6/src/ -I /wlcg/sw/cms/slc4_ia32_gcc345/cms/cmssw/CMSSW_3_3_6/src/ -I ../../  -c modules/pk01Analysis.cc -o modules/pk01Analysis.o
modules/pk01Analysis.cc: In member function `void pk01Analysis::processEvent(MTAPFTaus*, MTAGenTaus*)':
modules/pk01Analysis.cc:58: error: no matching function for call to `pk01Analysis::bestMatch(MTAGenTau*&amp;, MTAPFTaus*&amp;, std::set&lt;unsigned int, std::less&lt;unsigned int&gt;, std::allocator&lt;unsigned int&gt; &gt;&amp;, double)'
modules/pk01Analysis.cc:10: note: candidates are: MTAPFTau* pk01Analysis::bestMatch(MTAGenTau*, MTAPFTaus*, std::set&lt;unsigned int, std::less&lt;unsigned int&gt;, std::allocator&lt;unsigned int&gt; &gt;*, double)
modules/pk01Analysis.cc:52: warning: unused variable 'gt2'
make: *** [modules/pk01Analysis.o] Error 1
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1861389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861389</guid><dc:creator><![CDATA[marktwain]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 16:57:54 GMT]]></title><description><![CDATA[<p>Was ist MTAGenTaus?<br />
Was liefert MTAGenTaus::at()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861397</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Thu, 25 Feb 2010 16:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 17:04:11 GMT]]></title><description><![CDATA[<p>MTAGenTaus ist einfach ein std::vector&lt;MTAGenTau&gt;<br />
-&gt;at() liefert also einen MTAGenTau (soweit ich das verstehe). Oder liefert es etwas nur einen Pointer? oO?</p>
<pre><code class="language-cpp">#ifndef MTAGenTau_h
#define MTAGenTau_h

#include &quot;MTALorentzVector.h&quot;
#include &quot;MTALepton.h&quot;

class MTAGenTau : public MTALepton
{
public:
	MTAGenTau() : MTALepton(15), decayMode(0) {};
	MTAGenTau(MTAXYZELorentzVector temp_vec) : MTALepton(temp_vec,15) {};

	MTALorentzVector p4_vis;		// momenta of visible particles
	int status;
	unsigned int decayMode;
	//  0 - undefined
	//	1 - electron
	//	2 - muon
	// &gt;2 - hadronic
	// most significant bit (1&lt;&lt;15):
	//		0 = tau
	//		1 = descendant of a tau
};

typedef std::vector&lt;MTAGenTau&gt; MTAGenTaus;
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1861402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861402</guid><dc:creator><![CDATA[marktwain]]></dc:creator><pubDate>Thu, 25 Feb 2010 17:04:11 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 17:04:04 GMT]]></title><description><![CDATA[<p>Dein Fehler ist ganz einfach:<br />
Deine Funktion erwartet blacklist als Pointer, du übergibst sie aber direkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861404</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 25 Feb 2010 17:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Egtl was simples, aber es will mir nicht in den Kopf....[UPDATED] on Thu, 25 Feb 2010 17:07:22 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dein Fehler ist ganz einfach:<br />
Deine Funktion erwartet blacklist als Pointer, du übergibst sie aber direkt.</p>
</blockquote>
<p>OMG, du hast recht! Klar....Mensch und ich suche mich hier stundenlang zu Tode.<br />
Viele, vielen Dank <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>(Topic kann geschlossen werden ^^)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861409</guid><dc:creator><![CDATA[marktwain]]></dc:creator><pubDate>Thu, 25 Feb 2010 17:07:22 GMT</pubDate></item></channel></rss>