<?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[struct Return wert einer Funktion aus anderer Klasse]]></title><description><![CDATA[<p>Hallo,<br />
fogendes:</p>
<p>Wie komme ich an den Returnwert einer Funktion, wenn die Funktion in einer anderen Klasse liegt und der return wert eine Struktur ist.</p>
<p>z.B. für einen Int ist mir das klar.</p>
<pre><code class="language-cpp">class a { 

int fkt ()...
}

class b{..}
</code></pre>
<p>In der Cpp<br />
der b Klasse</p>
<pre><code class="language-cpp">a testobj;
int i;

i= a.fkt();
if (i ...)
</code></pre>
<p>Wenn ich das jetzt mit der structur mache kommt folgender fehler:</p>
<p>error C2679: binary '=' : no operator found which takes a right-hand operand of type 'a::test' (or there is no acceptable conversion)</p>
<p>(test ist hier der struct name)</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274590/struct-return-wert-einer-funktion-aus-anderer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 10:33:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274590.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Sep 2010 07:46:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 07:46:43 GMT]]></title><description><![CDATA[<p>Hallo,<br />
fogendes:</p>
<p>Wie komme ich an den Returnwert einer Funktion, wenn die Funktion in einer anderen Klasse liegt und der return wert eine Struktur ist.</p>
<p>z.B. für einen Int ist mir das klar.</p>
<pre><code class="language-cpp">class a { 

int fkt ()...
}

class b{..}
</code></pre>
<p>In der Cpp<br />
der b Klasse</p>
<pre><code class="language-cpp">a testobj;
int i;

i= a.fkt();
if (i ...)
</code></pre>
<p>Wenn ich das jetzt mit der structur mache kommt folgender fehler:</p>
<p>error C2679: binary '=' : no operator found which takes a right-hand operand of type 'a::test' (or there is no acceptable conversion)</p>
<p>(test ist hier der struct name)</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958828</guid><dc:creator><![CDATA[dubbes]]></dc:creator><pubDate>Wed, 29 Sep 2010 07:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 07:55:56 GMT]]></title><description><![CDATA[<p>Zeige ein <em>vollständiges</em>, kurzes Beispiel, was Deiner Meinung nach kompilierbar sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958834</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 29 Sep 2010 07:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 07:58:52 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung deutet darauf hin das der Bezeichner nicht bekannt ist, bzw. deine Struktur nur im KLassenscope bekannt ist.</p>
<p>So geht's richtig:</p>
<pre><code class="language-cpp">#include &quot;KeyLogger.h&quot;

struct test
{
	int a;
	int b;
};

class a
{
	public:
		test fkt()
		{
			test Test;
			Test.a = 10;
			Test.b = 20;

			return Test;
		}
};

int main()
{
	a testobj;

	test T = testobj.fkt();

	T;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1958837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958837</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Wed, 29 Sep 2010 07:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:22:11 GMT]]></title><description><![CDATA[<p>a.h</p>
<pre><code class="language-cpp">class a
{

private:

	struct package{
		int ID;
		short data; // Data
		};

	std::list&lt;package&gt; liste;
public:

	a();
	virtual ~a();

	package a::popPackage();
	//int a::popPackage();	
};
</code></pre>
<p>a.cpp</p>
<pre><code class="language-cpp">a::package_i a::popPackage()
//int a::popPackage()
{
	package temp_package;

	if (!liste.empty())
	{
		package temp_package;

		temp_package = *liste.begin();
		liste.pop_front();

		return temp_package;
	}
	else
	{	int i=-1;
		temp_package.ID=i;
		temp_package.data=i;
		return temp_package;

	}
}
</code></pre>
<p>b.h</p>
<pre><code class="language-cpp">class b
{

private:

	struct package_r{
		int ID;
		short data; // Data
		};

	std::list&lt;package_r&gt; send_list;

public:
	b();
	virtual ~b();

         int Router::pushPackage_r();

};
</code></pre>
<p>b.cpp</p>
<pre><code class="language-cpp">a obj;
int b::pushPackage_r()
{
	package_r temp_package;

	temp_package = obj_.popPackage();
	return 0;
}
</code></pre>
<p>wenndi fkt a.popPackage vom typ int ist gehts</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958844</guid><dc:creator><![CDATA[dubbes]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:24:44 GMT]]></title><description><![CDATA[<p>ansatt int Router::pushPackage_r();<br />
natürlich<br />
int b::pushPackage_r(); =</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958845</guid><dc:creator><![CDATA[dubbes]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:24:44 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:25:20 GMT]]></title><description><![CDATA[<p>a::package und b::package_r haben nichts miteinander zu tun. Auch wenn sie gleich aufgebaut sind, kannst du sie nicht einfach ineinander umwandeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958846</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:33:22 GMT]]></title><description><![CDATA[<p>Da habe ich auch gerade gemerkt. danke.</p>
<p>Wie kann ich die struct private halten aber die daten über pop an eine andere fkt ausgeben.</p>
<p>ich will verhindern, dass von außen anders auf die struct bzw. die list zugegriffen wird, außer über die pop fkt.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958849</guid><dc:creator><![CDATA[dubbes]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:33:55 GMT]]></title><description><![CDATA[<p>a::package und b::package_r sind zwei verschiedene Typen.</p>
<pre><code class="language-cpp">a obj;
...
b::package_r temp_package;
temp_package = obj.popPackage();
</code></pre>
<p>Du hast keinen Zuweisungsoperator definiert, welcher auf der linken Seite ein b::package_r-Objekt und auf der rechten Seite ein a::package-Objekt akzeptiert. Dabei spielt es keine Rolle, ob die beiden Structs &quot;gleich aufgebaut&quot; sind oder nicht.</p>
<p>Darüberhinaus hast Du die structs jeweils in der privaten Sektion definiert, womit der Name der Structs für andere nicht zugänglich ist.</p>
<p>Schreibe Dir einen neuen Header:</p>
<pre><code class="language-cpp">#ifndef PACKAGE_HPP_INCLUDED
#define PACKAGE_HPP_INCLUDED

struct package
{
  int ID;
  short data;
};

#endif
</code></pre>
<p>Binde ihn in Deine anderen Header ein, und entferne die Definitionen von a::package und b::package_r.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958850</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to struct Return wert einer Funktion aus anderer Klasse on Wed, 29 Sep 2010 08:38:12 GMT]]></title><description><![CDATA[<p>dubbes schrieb:</p>
<blockquote>
<p>a.h</p>
<pre><code class="language-cpp">class a
{
private:
	struct package{
		int ID;
		short data; // Data
		};

	std::list&lt;package&gt; liste;
public:

	a();
	virtual ~a();

	package a::popPackage();
	//int a::popPackage();	
};
</code></pre>
</blockquote>
<p>Es sieht nicht so aus, als ob Du einen virtuellen Destruktor brauchen würdest.<br />
Die Elementfunktion popPackage definiert man auch anders. Das a:: hat dort nichts zu suchen. Das gleiche gilt nochmal für Deine Klasse b.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1958852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1958852</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 29 Sep 2010 08:38:12 GMT</pubDate></item></channel></rss>