<?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[Zugriff von Klasse auf Werte von Variablen fremder Klasse]]></title><description><![CDATA[<p>Hallo</p>
<p>also ich habe momentan folgendes Problem</p>
<p>ich schreibe ein Programm.<br />
Dort gibt es 2 Klasse die benutzt werden.<br />
eine klasse cl_init ist zum auslesen der werte aus einer ini-datei zuständig.<br />
die klasse cl_parser zerlegt eine bestimmte datei.</p>
<p>für die klasse cl_parser brauche ich daten, die in der cl_init aus der ini-datei ausgelesen werden.</p>
<p>aber irgendwie funktioniert das alles nichts...<br />
die variablen sind als public definiert...</p>
<p>ich hab auch schon versucht eine oberklasse zu definieren...wo dann die cl_init die daten reinschreibt...<br />
aber wenn ich aus der cl_parser heraus auf die daten in der oberklasse zugreifen will sind die immer leer.</p>
<p>weiß jemand wie man bei sowas vorgeht?</p>
<p>bin für schnelle hilfe sehr dankbar</p>
<p>chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/191062/zugriff-von-klasse-auf-werte-von-variablen-fremder-klasse</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 21:48:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/191062.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Aug 2007 18:34:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 18:34:57 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>also ich habe momentan folgendes Problem</p>
<p>ich schreibe ein Programm.<br />
Dort gibt es 2 Klasse die benutzt werden.<br />
eine klasse cl_init ist zum auslesen der werte aus einer ini-datei zuständig.<br />
die klasse cl_parser zerlegt eine bestimmte datei.</p>
<p>für die klasse cl_parser brauche ich daten, die in der cl_init aus der ini-datei ausgelesen werden.</p>
<p>aber irgendwie funktioniert das alles nichts...<br />
die variablen sind als public definiert...</p>
<p>ich hab auch schon versucht eine oberklasse zu definieren...wo dann die cl_init die daten reinschreibt...<br />
aber wenn ich aus der cl_parser heraus auf die daten in der oberklasse zugreifen will sind die immer leer.</p>
<p>weiß jemand wie man bei sowas vorgeht?</p>
<p>bin für schnelle hilfe sehr dankbar</p>
<p>chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354815</guid><dc:creator><![CDATA[legion]]></dc:creator><pubDate>Wed, 29 Aug 2007 18:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 18:40:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cl_init init(&quot;Datei.txt&quot;);
cl_parser parser(init.DEIN_MEMBERNAME);
</code></pre>
<p>So greifst du auf die Daten aus der<br />
cl_init zu, wenn sie public sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354820</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Wed, 29 Aug 2007 18:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 18:41:01 GMT]]></title><description><![CDATA[<p>Also das Problem ist, dass cl_Parser auf die Daten von cl_Init zugreifen will, die Daten sind aber irgendwie nicht da?<br />
So pauschal kann ich da schlecht was zu sagen. Deshalb: Poste mal bitte etwas Source-Code (nicht alles!) - die relevanten Stellen sind die Stellen, wo ein Objekt der cl_Init mit einem Objekt der cl_Parser-Klasse interagiert. Und: Spielt sich alles in einer Exe-Datei ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354822</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 29 Aug 2007 18:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 19:06:56 GMT]]></title><description><![CDATA[<p>also ich hab hier nen ausschnitt aus der cl_init<br />
die variable z.b. tmp_dir wird mit einer methode verändert...<br />
also aus der ini-datei ausgelesen</p>
<pre><code class="language-cpp">cl_init(void);
	~cl_init(void);
	void read_ini();
	void write_ini();
	int max_url_length;
	string var_name;

//Variablen aus INI-File
//GENERAL
	string rpc_url;
	string tmp_dir;
	string exp_dir;
	string exp_file;
//DEBUG
int logging;
string log_file;
</code></pre>
<p>bei cl_parser..will ich beim konstruktor die datei öffnen<br />
für die pfadangabe brauch ich dann die variable tmp_dir<br />
um mir den pfad bei &quot;TMP/ava_gehe.txt&quot; zusammenzusetzen<br />
also dass dann z.b. steht cl_init::tmp_dir+&quot;/&quot;+cl_init::datei</p>
<pre><code class="language-cpp">cl_parser::cl_parser(void)
{

	read.open(&quot;TMP/ava_gehe.txt&quot;,ios_base::in);		//Datei zum lesen öffnen
}
</code></pre>
<p>und so möchte ich dann auch halt die daten aus der ini in der klasse parser verwenden</p>
<p>ja es spielt sich alles in einer exe ab</p>
<p>wenn noch mehr sourcecode fürs verständnis benötigt wird...einfach sagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354828</guid><dc:creator><![CDATA[legion]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:06:56 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 19:07:42 GMT]]></title><description><![CDATA[<p>Gut. Aber ist dir auch klar, dass, während das Programm dann läuft, nicht eine Klasse die Daten besitzt, sondern nur <em>ein Objekt vom Typ der Klasse</em>?<br />
Deshalb brauchst du ja auch ein Objekt von der Klasse. Ein Beispiel:</p>
<pre><code class="language-cpp">class cl_Init
{
public:
    string exp_file;

    bool LoadTheData();
};

class cl_Parser
{
public:
    cl_Parser( cl_Init* obj_of_init ) // Der Konstruktor von cl_Parser empfängt einen Zeiger auf ein Objekt von cl_Init
    {
        string blubb = obj_of_init-&gt;exp_file; // Und kann so auf die Daten des Objekts zugreifen
    }
};

int main()
{
    cl_Init obj, obj2; // 2 Objekte, beide haben eine unabhängige Variable &quot;exp_file&quot;.
    obj.LoadTheData(); // Das erste Objekt hat jetzt einen gültigen/belegten String &quot;exp_file&quot;.
    cl_Parser parser( &amp;obj ); // Jetzt haben wir einem Objekt der Klasse cl_Parser einen Zeiger auf ein Objekt mitgegeben
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1354843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354843</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 19:26:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">//Bereich in der int main
//Informationen aus der INI-Datei lesen

	cl_init init;
	init.read_ini();

//Parser aufrufen
	cl_parser parser(&amp;init);	//objekt erschaffen

//cl_parser.h
cl_parser(cl_init *settings);		//Konstruktor

//cl_init.cpp
cl_parser::cl_parser(cl_init *settings)
{

	//remove(cl_init::exp_dir+&quot;/&quot;+cl_init::exp_file);	
	//remove(&quot;EXP/sql_update_products.sql&quot;);			//Datei für mysql-update beim init löschen
	read.open(&quot;TMP/ava_gehe.txt&quot;,ios_base::in);		//Datei zum lesen öffnen
}
</code></pre>
<p>krieg ich fehler z.b. error C2143: Syntaxfehler: Es fehlt ')' vor '*'<br />
an der stelle &quot;cl_parser(cl_init *settings);&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354852</guid><dc:creator><![CDATA[legion]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 19:29:32 GMT]]></title><description><![CDATA[<p>legion schrieb:</p>
<blockquote>
<p>krieg ich fehler z.b. error C2143: Syntaxfehler: Es fehlt ')' vor '*'<br />
an der stelle &quot;cl_parser(cl_init *settings);&quot;</p>
</blockquote>
<p>Dein Compiler muss an der Stelle die Klasse &quot;cl_Init&quot; kennen. Entweder per Forward-Declaration, also vor in der &quot;cl_Parser.h&quot; vor die Klasse ein &quot;class cl_Init;&quot; schreiben (dann musst du in die &quot;cl_Parser.cpp&quot; die Datei &quot;cl_Init.h&quot; einbinden), oder, falls die Klasse cl_Init die Klasse cl_Parser nicht kennen muss, kannst du die &quot;cl_Init.h&quot; gleich in die &quot;cl_Parser.h&quot; einbinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354856</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 20:23:02 GMT]]></title><description><![CDATA[<p>ich hatte die cl_init.h eingebunden^^<br />
die wird ja auch erkannt (intellisense erkennts und zeigt mir den schnodder)</p>
<p>mh....soll ich dir mal den kompletten sourcecode schicken bzw posten?</p>
<p>EDIT:</p>
<p>also ich hab vor die klasse class cl_parser<br />
ein class cl_init; geknallt...und nun funkzt das....danke erstmal<br />
aber wieso??? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>und noch nen problem was sich grad ergibt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f623.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--persevering_face"
      title="&gt;.&lt;"
      alt="😣"
    /></p>
<pre><code class="language-cpp">remove((settings-&gt;exp_dir).c_str()+&quot;/&quot;+(settings-&gt;exp_file).c_str());
</code></pre>
<p>error C2110: '+': Zwei Zeiger können nicht addiert werden</p>
<p>hast du da vielleicht auch 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>
<p>EDIT2:</p>
<pre><code class="language-cpp">this-&gt;temp=settings-&gt;exp_dir+&quot;/&quot;;
this-&gt;temp=this-&gt;temp.append(settings-&gt;exp_file);

remove(temp.c_str());
</code></pre>
<p>so gehts...ja....aber gibts dafür vielleicht ne bessere methode?</p>
<p>EDIT3: (Bin ma gespannt wieviele edits noch kommen xD)</p>
<pre><code class="language-cpp">remove((settings-&gt;exp_dir+&quot;/&quot;+settings-&gt;exp_file).c_str());
</code></pre>
<p>das geht auch <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="🙂"
    /><br />
ist die beste alternative für das, was ich mache, oder?!</p>
<p>und....diese referenz muss ich bei jeder anderen methode in cl_parser immer mitgeben oder wie?</p>
<p>EDIT4:<br />
also das hab ich jetzt so gemacht...ich hab in konstruktor ja den zeiger auf das objekt...<br />
nun hab ich noch in private folgendes definiert:</p>
<p>private:<br />
cl_init *settings;</p>
<p>und im konstruktor:<br />
this-&gt;settings=settings;</p>
<p>damit kann ich dann das objekt in der ganzen klasse benutzen <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="🙂"
    /> *freu*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354865</guid><dc:creator><![CDATA[legion]]></dc:creator><pubDate>Wed, 29 Aug 2007 20:23:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Werte von Variablen fremder Klasse on Wed, 29 Aug 2007 21:31:05 GMT]]></title><description><![CDATA[<p>Schön, dass jetzt alles klappt! <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>Wegen <code>settings-&gt;exp_dir.c_str() + &quot;/&quot; + settings-&gt;exp_file.c_str()</code> :<br />
exp_dir ist ein Objekt vom Typ string. &quot;/&quot; ist ein const char* und damit ein Zeiger, Zeiger kann man nicht addieren, da sie ja nur auf eine Stelle im Arbeitsspeicher zeigen. Aber, weil man in C++ ja so schick Operatoren überladen kann, ist von der Klasse string der Operator '+' überladen - damit kann man dann Zeichenketten aneinanderhängen. Deshalb geht z.B. <code>exp_dir + &quot;hallo&quot; + &quot;xyz&quot;</code> , einfach weil vorne ein Objekt vom Typ string (und damit kein Zeiger) ist. Die Funktion &quot;c_str()&quot; gibt aber halt wieder einen const char* zurück, mit dem man nix verknüpfen kann. Deshalb einfachste Lösung:</p>
<pre><code class="language-cpp">remove( settings-&gt;exp_dir + &quot;/&quot; + settings-&gt;exp_file );
</code></pre>
<p>Und wegen dem &quot;class cl_Init;&quot;:<br />
In C++ werden immer die .cpp-Dateien geparst. Wenn die Datei mittels &quot;#include &quot;xy&quot; Dateien einbindet, wird einfach quasi aller Text aus dieser Datei genommen und in die .cpp-Datei eingefügt, dahin wo das &quot;#include&quot; steht.<br />
Wenn der Compiler dann durch die Cpp-Datei durchgeht und sich alles genau anschaut, müssen alle verwendeten Typen bekannt sein. Wenn du einfach irgendwo hinschreibst <code>CMeinKlasse y;</code> , sagt der Compiler, er kennt &quot;CMeineKlasse&quot; nicht. Wenn du diese aber in einer Header-Datei deklarierst und die Header-Datei einbindest, steht sie dann ja quasi auch in deiner cpp-Datei drin (durch das include). Und deshalb kennt der Compiler die Klasse dann.<br />
Wenn man aber Klassen hat, die sich gegenseitig einbinden, klappt das ganze nicht - dafür gibts dann Forward-Deklarationen, die dem Compiler sagen &quot;hey, es gibt noch ne Klasse 'cl_Init', die kriegst du aber später noch zu Gesicht&quot;. Und deshalb brauchtest du das (hoffe das war alles halbwegs verständlich) <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/1354972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354972</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 29 Aug 2007 21:31:05 GMT</pubDate></item></channel></rss>