<?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[enum aus einer Klasse in anderen Klassen verwenden]]></title><description><![CDATA[<p>hallo miteinander!<br />
ich schreibe grad an einem Programm und wollte in einer Klasse Record ein enum definieren und in einer anderen klasse dann eine variable von diesem enum-Typ anlegen und der Methode 'getField(Field field)' übergeben.</p>
<p>Jedoch weis ich nicht genau wie ich das machen soll</p>
<p>hier die Record.h:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
using namespace std;

#ifndef DATA_H_
#define DATA_H_

	enum Field {NAME,VORNAME,STRASSE,PLZ,ORT,TELNR};

class Record {
	friend class RecordList;
public:
	enum Field {NAME,VORNAME,STRASSE,PLZ,ORT,TELNR};

public:
	Record(const string &amp;name, const string &amp;vorname, const string &amp;strasse,
			const string &amp;hausnr, const string &amp;plz,const string &amp;ort,
			const string &amp;vorwahl, const string &amp;telnr, const string &amp;bilddateiname, bool isdn);
	Record();
	virtual ~Record();
	//gibt alle Informationen des Datensatzes aus
	void printAll();
	void swapContents(Record *b);

	string getField(Field field);

	Record *prev;
	Record *next;

public:
	string Name;
	string Vorname;
	string Strasse;
	string Hausnr;
	string Plz;
	string Ort;
	string Vorwahl;
	string Telnr;
	string Bilddateiname;
	bool isdn;
};

#endif /* DATA_H_ */
</code></pre>
<p>und die Record.cpp:</p>
<pre><code class="language-cpp">#include &quot;Record.h&quot;
#include &lt;string&gt;
#include &lt;iostream&gt;

Record::Record(const string &amp;name, const string &amp;vorname,const string &amp;strasse,
		const string &amp;hausnr, const string &amp;plz,const string &amp;ort,
		const string &amp;vorwahl,const string &amp;telnr, const string &amp;bilddateiname, bool isdn)
	: prev(NULL),next(NULL), Name(name), Vorname(vorname), Strasse(strasse),Hausnr(hausnr), Plz(plz),
	 	 Ort(ort), Vorwahl(vorwahl), Telnr(telnr), Bilddateiname(bilddateiname), isdn(isdn)
{

}

Record::Record()
:prev(NULL), next(NULL)
{}

void Record::printAll(){
	std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; Name &lt;&lt; &quot;, Vorname: &quot; &lt;&lt; Vorname &lt;&lt; &quot;, Straße: &quot; &lt;&lt; Strasse &lt;&lt; &quot;, &quot;
			&lt;&lt; Hausnr &lt;&lt; &quot;, Plz: &quot; &lt;&lt; Plz &lt;&lt; &quot;, Ort:&quot; &lt;&lt; Ort &lt;&lt; &quot;, Telnr: &quot; &lt;&lt; Vorwahl
			&lt;&lt; &quot; &quot; &lt;&lt; Telnr &lt;&lt; std::endl &lt;&lt; std::flush;
}

Record::~Record() {

	// TODO Auto-generated destructor stub
}

void Record::swapContents(Record *b){
	Record tmp(Name, Vorname, Strasse,Hausnr, Plz, Ort,Vorwahl, Telnr, Bilddateiname,  isdn);
	this-&gt;Name = b-&gt;Name;
	this-&gt;Vorname = b-&gt;Vorname;
	this-&gt;Strasse = b-&gt;Strasse;
	this-&gt;Hausnr = b-&gt;Hausnr;
	this-&gt;Plz = b-&gt;Plz;
	this-&gt;Ort = b-&gt;Ort;
	this-&gt;Vorwahl = b-&gt;Vorwahl;
	this-&gt;Telnr = b-&gt;Telnr;
	this-&gt;Bilddateiname = b-&gt;Bilddateiname;
	this-&gt;isdn = b-&gt;isdn;

	b-&gt;Name = tmp.Name;
	b-&gt;Vorname = tmp.Vorname;
	b-&gt;Strasse = tmp.Strasse;
	b-&gt;Hausnr = tmp.Hausnr;
	b-&gt;Plz = tmp.Plz;
	b-&gt;Ort = tmp.Ort;
	b-&gt;Vorwahl = tmp.Vorwahl;
	b-&gt;Telnr = tmp.Telnr;
	b-&gt;Bilddateiname = tmp.Bilddateiname;
	b-&gt;isdn = tmp.isdn;
}

string Record::getField(Field field){
	switch(field){
	case NAME: return Name; break;
	case VORNAME: return Vorname; break;
	case STRASSE: return Strasse + Hausnr; break;
	case PLZ: return Plz; break;
	case ORT: return Ort; break;
	case TELNR: return Telnr; break;
	default: return NULL;
	}
}
</code></pre>
<p>und die Klasse in der ich die Variable anlege und der Funktion getField(Field field) übergebe:</p>
<pre><code class="language-cpp">#include &quot;Record.h&quot;
class A{
       Field f;
       f = Record::NAME;
       string s = getField(f);
}
</code></pre>
<p>vielen dank schon mal im voraus für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302375/enum-aus-einer-klasse-in-anderen-klassen-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 07:43:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302375.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Apr 2012 13:28:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to enum aus einer Klasse in anderen Klassen verwenden on Tue, 17 Apr 2012 13:39:00 GMT]]></title><description><![CDATA[<p>hallo miteinander!<br />
ich schreibe grad an einem Programm und wollte in einer Klasse Record ein enum definieren und in einer anderen klasse dann eine variable von diesem enum-Typ anlegen und der Methode 'getField(Field field)' übergeben.</p>
<p>Jedoch weis ich nicht genau wie ich das machen soll</p>
<p>hier die Record.h:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
using namespace std;

#ifndef DATA_H_
#define DATA_H_

	enum Field {NAME,VORNAME,STRASSE,PLZ,ORT,TELNR};

class Record {
	friend class RecordList;
public:
	enum Field {NAME,VORNAME,STRASSE,PLZ,ORT,TELNR};

public:
	Record(const string &amp;name, const string &amp;vorname, const string &amp;strasse,
			const string &amp;hausnr, const string &amp;plz,const string &amp;ort,
			const string &amp;vorwahl, const string &amp;telnr, const string &amp;bilddateiname, bool isdn);
	Record();
	virtual ~Record();
	//gibt alle Informationen des Datensatzes aus
	void printAll();
	void swapContents(Record *b);

	string getField(Field field);

	Record *prev;
	Record *next;

public:
	string Name;
	string Vorname;
	string Strasse;
	string Hausnr;
	string Plz;
	string Ort;
	string Vorwahl;
	string Telnr;
	string Bilddateiname;
	bool isdn;
};

#endif /* DATA_H_ */
</code></pre>
<p>und die Record.cpp:</p>
<pre><code class="language-cpp">#include &quot;Record.h&quot;
#include &lt;string&gt;
#include &lt;iostream&gt;

Record::Record(const string &amp;name, const string &amp;vorname,const string &amp;strasse,
		const string &amp;hausnr, const string &amp;plz,const string &amp;ort,
		const string &amp;vorwahl,const string &amp;telnr, const string &amp;bilddateiname, bool isdn)
	: prev(NULL),next(NULL), Name(name), Vorname(vorname), Strasse(strasse),Hausnr(hausnr), Plz(plz),
	 	 Ort(ort), Vorwahl(vorwahl), Telnr(telnr), Bilddateiname(bilddateiname), isdn(isdn)
{

}

Record::Record()
:prev(NULL), next(NULL)
{}

void Record::printAll(){
	std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; Name &lt;&lt; &quot;, Vorname: &quot; &lt;&lt; Vorname &lt;&lt; &quot;, Straße: &quot; &lt;&lt; Strasse &lt;&lt; &quot;, &quot;
			&lt;&lt; Hausnr &lt;&lt; &quot;, Plz: &quot; &lt;&lt; Plz &lt;&lt; &quot;, Ort:&quot; &lt;&lt; Ort &lt;&lt; &quot;, Telnr: &quot; &lt;&lt; Vorwahl
			&lt;&lt; &quot; &quot; &lt;&lt; Telnr &lt;&lt; std::endl &lt;&lt; std::flush;
}

Record::~Record() {

	// TODO Auto-generated destructor stub
}

void Record::swapContents(Record *b){
	Record tmp(Name, Vorname, Strasse,Hausnr, Plz, Ort,Vorwahl, Telnr, Bilddateiname,  isdn);
	this-&gt;Name = b-&gt;Name;
	this-&gt;Vorname = b-&gt;Vorname;
	this-&gt;Strasse = b-&gt;Strasse;
	this-&gt;Hausnr = b-&gt;Hausnr;
	this-&gt;Plz = b-&gt;Plz;
	this-&gt;Ort = b-&gt;Ort;
	this-&gt;Vorwahl = b-&gt;Vorwahl;
	this-&gt;Telnr = b-&gt;Telnr;
	this-&gt;Bilddateiname = b-&gt;Bilddateiname;
	this-&gt;isdn = b-&gt;isdn;

	b-&gt;Name = tmp.Name;
	b-&gt;Vorname = tmp.Vorname;
	b-&gt;Strasse = tmp.Strasse;
	b-&gt;Hausnr = tmp.Hausnr;
	b-&gt;Plz = tmp.Plz;
	b-&gt;Ort = tmp.Ort;
	b-&gt;Vorwahl = tmp.Vorwahl;
	b-&gt;Telnr = tmp.Telnr;
	b-&gt;Bilddateiname = tmp.Bilddateiname;
	b-&gt;isdn = tmp.isdn;
}

string Record::getField(Field field){
	switch(field){
	case NAME: return Name; break;
	case VORNAME: return Vorname; break;
	case STRASSE: return Strasse + Hausnr; break;
	case PLZ: return Plz; break;
	case ORT: return Ort; break;
	case TELNR: return Telnr; break;
	default: return NULL;
	}
}
</code></pre>
<p>und die Klasse in der ich die Variable anlege und der Funktion getField(Field field) übergebe:</p>
<pre><code class="language-cpp">#include &quot;Record.h&quot;
class A{
       Field f;
       f = Record::NAME;
       string s = getField(f);
}
</code></pre>
<p>vielen dank schon mal im voraus für eure hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202888</guid><dc:creator><![CDATA[heikob2]]></dc:creator><pubDate>Tue, 17 Apr 2012 13:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to enum aus einer Klasse in anderen Klassen verwenden on Tue, 17 Apr 2012 13:42:13 GMT]]></title><description><![CDATA[<p>Hallo heikob,</p>
<p>so sollte es gehen:</p>
<pre><code class="language-cpp">struct Foo {
    enum e {a,b,c};
    void bla( e tralala ) {};
};

struct Bar {
    void sabbel() {
        Foo::e v( Foo::a );
        Foo f;
        f.bla( v );
    }
};

int main() {
}
</code></pre>
<p>Ein paar Sachen noch zu deinem Code:<br />
- Field kommt zwei mal vor. Einmal in der klasse und einmal draussen. Warum?<br />
- Eine Funktion, die 10 Parameter nimmt (in deinem fall der ctor) kann schonmal recht unkomfortabel werden.<br />
- Beim Swap implementierst du einen Dreieckstausch, den std::swap schon kann. Bist du sicher, dass du den Inhalt zweier Records swappen können musst? Würde es nicht reichen, die beiden Records einfach da, wo du sie denn dann irgendwann hälst, zu swappen?<br />
- Es sieht so aus, als würdest du teilweise std::map nachprogrammieren. Diese oder eine ähnliche Datenstruktur könnte (zumindest auf Grund von dem, was man bisher sieht) besser geeignet sein. Dann würdest du dir viel Tipparbeit sparen und wärst auch flexibler falls mal neue Datenfelder hinzukommen.<br />
- Die Zeiger prev und next im Record deuten drauf hin, dass du hier selbst soetwas wie std::list nachprogrammierst. Bist du dir sicher, dass das nötig ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202895</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 17 Apr 2012 13:42:13 GMT</pubDate></item><item><title><![CDATA[Reply to enum aus einer Klasse in anderen Klassen verwenden on Tue, 17 Apr 2012 14:24:16 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe, habs hin bekommen.</p>
<p>- Hab das enum aus der Klasse gelöscht und über die Klassendeklaration gestellt.<br />
-&gt; das enum ist in allen Klassen, die die Record.h einbinden sichtbar und dann hats funktioniert</p>
<p>- ja schon aber ist genau so beabsichtigt, da ein Record einen Eintrag in einem Adressbuch darstellt die später z.T. dann in einer GUI mittels QT dargestellt werden</p>
<p>- ok danke, das mit dem swap wusste ich auch noch nicht. Das swap brauche ich für bubble u. quicksort, mit denen die doppelt verkettete liste sortiert wird</p>
<p>- es war in meiner aufgabenstellung gefordert selbst eine doppelt verkettete Liste zu erstellen, damit man auch mal mit der Speicherverwaltung, copy-Konstruktor u. Assingnment-Operator usw. zu tun hat u. die entstehnden Probleme erkennt u. versteht</p>
<p>is also en bissel umfangreicher als die paar zeilen, die ich geschrieben habe, wusste halt nicht wie ich das mit dem enum machen sollte</p>
<p>P.S: die meisten fehler waren gar keine, hat nur eclipse so angezeigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202922</guid><dc:creator><![CDATA[heikob2]]></dc:creator><pubDate>Tue, 17 Apr 2012 14:24:16 GMT</pubDate></item><item><title><![CDATA[Reply to enum aus einer Klasse in anderen Klassen verwenden on Tue, 17 Apr 2012 14:33:12 GMT]]></title><description><![CDATA[<p>Na gut, wenns als Übung gedacht ist, kann man sone Liste schonmal selbst implementieren. <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>
<p>Wenns in der Aufgabe gestattet ist, würde ich allerdings die Liste seperat (und generisch) unabhängig von deinem Datum (Record) schreiben. Der Lerneffekt wäre vermutlich noch größer, und es wär sauberer, übersichtlicher und für meinen Geschmack auch einfacher.<br />
Ist es auch vorgegeben, dass du keine Map (oder sonstwas) für die Felder innerhalb eines Records benutzen darfst? Das würde halt wie gesagt zu kürzerem code führen und Erweiterungen mit zusätzlichen Feldern vereinfachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202927</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Tue, 17 Apr 2012 14:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to enum aus einer Klasse in anderen Klassen verwenden on Fri, 20 Apr 2012 14:10:32 GMT]]></title><description><![CDATA[<p>Ist Teil eines benoteten Praktikums, deswegen sollten wir das selbst implementieren</p>
<p>gruß heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2203995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2203995</guid><dc:creator><![CDATA[heikob2]]></dc:creator><pubDate>Fri, 20 Apr 2012 14:10:32 GMT</pubDate></item></channel></rss>