<?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[Get&#x2F;Set Methode für Klasse?]]></title><description><![CDATA[<p>Hallo, ich wollte mal fragen, wie ich eine Set und Get Methode für Config-Variablen mache, die dann verschiedene Datentypen akzeptiert, aber ohne das ich die mehrmals definieren muss..., achja die Config ist in einem Array gespeichert...<br />
Ich hab keinen Ansatz dafür...</p>
<p>Ich gebe mich auch mit Links du Dokumentationen zufrieden, auch wenn ein Beispiel das schönste wäre <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/topic/186171/get-set-methode-für-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 07:51:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186171.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jul 2007 18:40:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 18:40:07 GMT]]></title><description><![CDATA[<p>Hallo, ich wollte mal fragen, wie ich eine Set und Get Methode für Config-Variablen mache, die dann verschiedene Datentypen akzeptiert, aber ohne das ich die mehrmals definieren muss..., achja die Config ist in einem Array gespeichert...<br />
Ich hab keinen Ansatz dafür...</p>
<p>Ich gebe mich auch mit Links du Dokumentationen zufrieden, auch wenn ein Beispiel das schönste wäre <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/1319154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319154</guid><dc:creator><![CDATA[Blackskyliner]]></dc:creator><pubDate>Thu, 05 Jul 2007 18:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 18:50:06 GMT]]></title><description><![CDATA[<p>Du könntest dir eine Variant-Klasse bauen, die ihren Typ kennt und den natürlich auch speichern kann.<br />
Warum lagerst du die Config-Variablen nicht einzeln oder sinds zu viele?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319162</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 05 Jul 2007 18:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 19:03:45 GMT]]></title><description><![CDATA[<p>Paar Kumpels und ich wir wollen ein SPiel machen, ganz einfach gehalten, und da es dort viel mit Wirtschaftssimulation auf sich hat, wäre es vom Konfigurierendem Aufwand, wenn wir eine Methode hätten, die Config Variablen, die dann später über eine Config und eine Console einstellbar sind, zu ändern.</p>
<p>Was hat es mit so einer Variant Klasse auf sich?</p>
<p>Nur das man uns auch vesteht, wir wollen nicht sowas machen wie:<br />
SetBla(), SetBlub(), SetBli(), GetBla(),GetBlub(),GetBli()</p>
<p>sondern wir würde es grne so geregelt bekommen:</p>
<p>GetVar(&quot;Bla&quot;), GetVar(&quot;Bli&quot;), GetVar(&quot;Blubb&quot;);<br />
SetVar(&quot;Bla&quot;,1000), SetVar(&quot;Bli&quot;,&quot;TestVar&quot;), SetVar(&quot;Blubb&quot;,1.04040)</p>
<p>Nur haben wir alle keine Ahnung wie... Ich hatte mir gedacht, man könnte es über Funktions-Templates lösen... nur hat da von uns leider keiner Ahnung von <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>
<p>Irgendeine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319177</guid><dc:creator><![CDATA[Blackskyliner]]></dc:creator><pubDate>Thu, 05 Jul 2007 19:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 19:19:10 GMT]]></title><description><![CDATA[<p>Blackskyliner schrieb:</p>
<blockquote>
<p>...<br />
Was hat es mit so einer Variant Klasse auf sich?</p>
<p>...<br />
sondern wir würde es grne so geregelt bekommen:</p>
<p>GetVar(&quot;Bla&quot;), GetVar(&quot;Bli&quot;), GetVar(&quot;Blubb&quot;);<br />
SetVar(&quot;Bla&quot;,1000), SetVar(&quot;Bli&quot;,&quot;TestVar&quot;), SetVar(&quot;Blubb&quot;,1.04040)<br />
...</p>
</blockquote>
<p>Also erstmal zur Variant-Klasse. Hierbei handelt es sich im wesentlichen um ein Datentyp der sich verschiedene Daten merken kann und intern notiert welches Format das ist (Dennoch musst du dann dennoch die richtige Getter verwenden, so etwa GetDouble/Get&lt;double&gt; oder ähnliches...).</p>
<p>Alternativ: Methodenüberladung<br />
Dies geht leider nicht über den Rückgabewert. Was möglich wäre, wäre über Parameterrückgabe:</p>
<p>void Set(std::string name, TYP var)<br />
void Get(std::string name, TYP&amp; var)</p>
<p>(für jeden Typ um die richtige behandlung zu bekommen).</p>
<p>Löst aber nicht das Problem der Speicherung (für jeden Typ eigene Liste, oder intern anderer Datentyp, oder besagter Variant...).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319189</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 05 Jul 2007 19:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 19:20:59 GMT]]></title><description><![CDATA[<p>Nachtrag: Funktions/Methodentemlates mit Spezialisierungen gehen natürlich ebenso. Nur muss auch dort dann der Typ eindeutig bestimmbar sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319192</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 05 Jul 2007 19:20:59 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 19:31:04 GMT]]></title><description><![CDATA[<p>Mir kam da grade mal eine Idee...<br />
Könnte man es so regeln:</p>
<p>Man definiert eine &quot;Vereinte Struktur&quot; (union) z.B. so:</p>
<pre><code class="language-cpp">union MyGameVarStruct{
	int i;
	float f;
	char* s;
	long l;
	double d;
};
</code></pre>
<p>Die einzelnen Zuweisungen würden über Typ-Abfragen laufen... Insoferns bei C++ gibt??</p>
<p>Danach wäre meine Vermutung eine Config Struktur zu machen die so aussieht:</p>
<pre><code class="language-cpp">struct ConficStruct{
	char* ConfigName;
	MyGameVarStruct Value;
};
</code></pre>
<p>Diese würde ich dan privat deklarieren:</p>
<pre><code class="language-cpp">ConficStruct ConfigArray[255];
</code></pre>
<p>und in der Set Variante wird dann einfach das Array durgegangen bis bei<br />
ConfigName der gesuchte String steht und da dann die Value ersetzen mit dem neuen Wert, wie gesagt, es scheiter sobald es in C++ keine Typ-Afrag funktionen gibt, sowas in der Art wie &quot;is_char&quot; oder &quot;is_int&quot;?? wäre schön... kennt da jmd. was?</p>
<p>Ist der ansatz weitestgehend richtig??<br />
Was müsste man ändern, damits richtig wird??</p>
<p>Danke<br />
Blackskyliner &amp; Co</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319202</guid><dc:creator><![CDATA[Blackskyliner]]></dc:creator><pubDate>Thu, 05 Jul 2007 19:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 20:02:34 GMT]]></title><description><![CDATA[<p>Ja, du hast es doch schon fast <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>Fehlt nur noch, dass du den Typ der Variable noch speicherst, dann hast du auch ein quasi-&quot;is_char&quot;. Z.B. in der ConfigStruct nimmst du noch ne Variable dazu, die gewisse Werte annehmen kann (von einem <em>enum</em>, bietet sich an), z.B. VARTYPE_INT oder VARTYPE_STRING oder VARTYPE_DOUBLE.</p>
<p>Du könntest dir auch eine Variant-Klasse bauen, der du über eine Set-Methode einen String übergibst. Je nachdem, welcher Typ verwendet wird, parse't du den String halt in einen double, int, float, oder sonstwas. Und diese Klasse könnte dann ihren Wert (wenns gefragt ist) auch als String zurückgeben. Außerdem kannst du schön Operatoren überladen, also z.B. <em>operator+( Variant&amp; v )</em>. Wenn der Typ gleich ist, werden die zwei Werte addiert, sonst gibts irgendeinen Fehler. Oder so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319224</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 05 Jul 2007 20:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 20:02:33 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Data
{
 std::string value;
 public:
 int intValue();
 float floatValue();
 // usw. je nach benötigten typen
}

class Config
{
 std::map&lt;std::string, Data&gt; configData;
 public:
 void set(std::string name, std::string value);
 Data get(std::string);
}

// ...
int someVar = config.get(&quot;someVar&quot;).intValue();
</code></pre>
<p>wär die variante, die ich wahrscheinlich wählen würde. Data implementiert für jeden typ entsprechende methoden, um von string in den benötigten typen zu konvertieren. die daten kommen aus der config datei eh als string und müssen dann nur bei bedarf in den entsprechenden typ umgebastelt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319227</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 05 Jul 2007 20:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Get&#x2F;Set Methode für Klasse? on Thu, 05 Jul 2007 20:08:02 GMT]]></title><description><![CDATA[<p>Mal sehn, erstmal die Methode, man soll ja was draus lernen <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="😉"
    /><br />
Hab da nun mal was gebastelt..</p>
<pre><code class="language-cpp">void Game::SetConfigVar(char* VarName, MyGameVarStruct VarValue){
	for(int i = 0; i&lt;255; i++){
		if(this-&gt;MyGameConfig[i].ConfigName == VarName){
			this-&gt;MyGameConfig[i].Value = VarValue;
			break;
		}else{
			if(this-&gt;MyGameConfig[i].ConfigName == &quot;&quot;)
			{
				this-&gt;MyGameConfig[i].ConfigName = VarName;
				this-&gt;MyGameConfig[i].Value = VarValue;
				break;
			}
		}
	}
};

MyGameVarStruct Game::GetConfigVar(char* VarName){
	MyGameVarStruct ReturnVar;

	for(int i = 0; i&lt;255; i++){
		if(this-&gt;MyGameConfig[i].ConfigName == VarName){
			ReturnVar = this-&gt;MyGameConfig[i].Value;
		}else{
			if(this-&gt;MyGameConfig[i].ConfigName == &quot;&quot;)
				ReturnVar.i = 0;
		}
	}

	return ReturnVar;
};
</code></pre>
<p>Jetzt, da hast du recht würde es sich der Einfachhalber her anbieten in die ConfigStruct einfach ein VarType zu nehmen... d.H. man müsste bei dem erstmaligen initialisieren der Variablen sagen, WAS es am Ende sein soll und anhand dessen dann die Zuweisung im union tätigen... richtig?</p>
<p>Mal so als nebenfrage...<br />
Kann man von einem String einfach so in alles andere Casten, ich arbeite selten mit der String-Klasse?</p>
<p>EDIT:<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9660">@thordk</a>, auch ne schöne Variante... und so einfach gehalten :D, ich denke zu kompliziert... mein Leher sagt mir das auch immer.... xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319230</guid><dc:creator><![CDATA[Blackskyliner]]></dc:creator><pubDate>Thu, 05 Jul 2007 20:08:02 GMT</pubDate></item></channel></rss>