<?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[Erstellte Klassen in aderer .cpp verwenden]]></title><description><![CDATA[<p>Wie der Titel schon beschreibt, geht es um Klassen in C++.<br />
Ich habe folgendes Problem:</p>
<p>Ich habe ein Klasse in einem Headerfile definiert und diese dann in einer .cpp Datei mit Werten gefüllt.<br />
Ich möchte nun in einer anderen .cpp Datei bestimmte Werte dieser Klasse wieder verwenden.</p>
<pre><code>//in klasse.h
class EineKlasse
{
public:

	double a;
	double b;
	double ab;
        void rechnen {
            ab = a * b;
            cout &lt;&lt; ab;
        };
};

//in klasse.cpp
EineKlasse ErsteKlasse;
ErsteKlasse.a = 1;
ErsteKlasse.b = 2;
ErsteKlasse.rechnen;
</code></pre>
<p>nun möchte ich in einer anderen .cpp datei die Werte aus ErsteKlasse.ab, zweiteKlasse.ab usw. wieder verwenden. Leider krieg ich das nicht hin... kann mir evtl. Jemand auf die Sprünge helfen, wo ich einen Denk- bzw. nicht C++ konformen Fehler gemacht habe?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332865/erstellte-klassen-in-aderer-cpp-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 10:55:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332865.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 May 2015 22:17:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Tue, 26 May 2015 22:17:59 GMT]]></title><description><![CDATA[<p>Wie der Titel schon beschreibt, geht es um Klassen in C++.<br />
Ich habe folgendes Problem:</p>
<p>Ich habe ein Klasse in einem Headerfile definiert und diese dann in einer .cpp Datei mit Werten gefüllt.<br />
Ich möchte nun in einer anderen .cpp Datei bestimmte Werte dieser Klasse wieder verwenden.</p>
<pre><code>//in klasse.h
class EineKlasse
{
public:

	double a;
	double b;
	double ab;
        void rechnen {
            ab = a * b;
            cout &lt;&lt; ab;
        };
};

//in klasse.cpp
EineKlasse ErsteKlasse;
ErsteKlasse.a = 1;
ErsteKlasse.b = 2;
ErsteKlasse.rechnen;
</code></pre>
<p>nun möchte ich in einer anderen .cpp datei die Werte aus ErsteKlasse.ab, zweiteKlasse.ab usw. wieder verwenden. Leider krieg ich das nicht hin... kann mir evtl. Jemand auf die Sprünge helfen, wo ich einen Denk- bzw. nicht C++ konformen Fehler gemacht habe?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454855</guid><dc:creator><![CDATA[Bruce W.]]></dc:creator><pubDate>Tue, 26 May 2015 22:17:59 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Tue, 26 May 2015 23:04:34 GMT]]></title><description><![CDATA[<p>Dafür musst du das Objekt ErsteKlasse in der anderen Datei bekannt machen. Das kann man mittels <code>extern</code> erreichen. ErsteKlasse ist somit eine globale Variable. Falls es dir noch niemand gesagt hat: Globale Variablen solltest du lieber nicht benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454863</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 26 May 2015 23:04:34 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 17:08:53 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dafür musst du das Objekt ErsteKlasse in der anderen Datei bekannt machen. Das kann man mittels <code>extern</code> erreichen. ErsteKlasse ist somit eine globale Variable. Falls es dir noch niemand gesagt hat: Globale Variablen solltest du lieber nicht benutzen.</p>
</blockquote>
<p>Danke für die rasche Antwort.<br />
Nein, hat mir noch niemand gesagt, danke für den Tipp. Ich werde es trotzdem mit der Globalen Variable versuchen, bevor ich den Code umstrukturiere. Wo müsste ich das &quot;extern&quot; denn anwenden?</p>
<p>extern EineKlasse ErsteKlasse funktioniert leider nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454919</guid><dc:creator><![CDATA[Bruce W.]]></dc:creator><pubDate>Wed, 27 May 2015 17:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 17:40:12 GMT]]></title><description><![CDATA[<p>&quot;Funktioniert nicht &quot; ist keine Fehlerbeschreibung!</p>
<p>Zeige Code und die Meldungen des Compilers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454921</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 27 May 2015 17:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 19:55:05 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>&quot;Funktioniert nicht &quot; ist keine Fehlerbeschreibung!</p>
<p>Zeige Code und die Meldungen des Compilers</p>
</blockquote>
<p>Grob gesehen sieht das Programm bis jetzt folgendermassen aus:</p>
<pre><code>//in main.cpp
#include &lt;iostream&gt;
#include &quot;header.h&quot;

using namespace std;

int main() {
	cout &lt;&lt; &quot;Wählen Sie eine Farbe. \n 1 für blau \n 2 für grün \n 3 für gelb&quot; &lt;&lt; endl;
	int farbe;
	cin &gt;&gt; farbe;

	int rechnen = farbe * 2;

	switch (farbe)
	{
	case 1: 
		funktion1(rechnen);
		break;
	case 2: 
		funktion2(rechnen);
		break;
	case 3: 
		funktion3(rechnen);
		break;
	}

	funktion4();
}

//in Header.h
#ifndef HEADER_H
#define HEADER_H

void funktion1(int rechnen);
void funktion2(int rechnen);
void funktion3(int rechnen);
void funktion4();

#endif

//in EineKlasse.h
#ifndef EINEKLASSE_H
#define EINEKLASSE_H

class EineKlasse
{
public:
	double a;
	double b;
	double ab;
	void rechnen() {
		ab = a * b;
	};
};

#endif

//in EineKlasse.cpp
#include &quot;Header.h&quot;
#include &quot;EineKlasse.h&quot;

void funktion1(int rechnen) {
	EineKlasse ErsteKlasse;
	ErsteKlasse.a = 1;
	ErsteKlasse.b = 2;
	ErsteKlasse.rechnen();

	EineKlasse ZweiteKlasse;
	ZweiteKlasse.a = 3;
	ZweiteKlasse.b = 4;
	ZweiteKlasse.rechnen();
}

void funktion2(int rechnen) {
	EineKlasse ErsteKlasse;
	ErsteKlasse.a = 2;
	ErsteKlasse.b = 3;
	ErsteKlasse.rechnen();

	EineKlasse ZweiteKlasse;
	ZweiteKlasse.a = 4;
	ZweiteKlasse.b = 5;
	ZweiteKlasse.rechnen();
}

void funktion3(int rechnen) {
	EineKlasse ErsteKlasse;
	ErsteKlasse.a = 4;
	ErsteKlasse.b = 5;
	ErsteKlasse.rechnen();

	EineKlasse ZweiteKlasse;
	ZweiteKlasse.a = 6;
	ZweiteKlasse.b = 7;
	ZweiteKlasse.rechnen();
}

//in AndereKlasse.h
#ifndef ANDEREKLASSE_H
#define ANDEREKLASSE_H

class AndereKlasse
{
public:
	int a;
	int b;

	AndereKlasse(int z) {
		a = z;
		b = z;
	};
};

#endif

//in AndereKlasse.cpp
#include &quot;AndereKlasse.h&quot;

void funktion4() {
	AndereKlasse Klasse1(0);
	Klasse1.a = 4;

	AndereKlasse Klasse2(0);
	Klasse2.a = 5;

	AndereKlasse Klasse3(0);
	Klasse3.a = 7;
	Klasse3.b = 9;

	AndereKlasse Klasse4(0);
	Klasse4.b = 3;

}
</code></pre>
<p>Ich möchte nun in einer weiteren Funktion mit Eigen in einem linearen Gleichungssystem berechnen, wie viele der Klasse1 - Klasse4 ich benötige um die Wert der verschiedenen EineKlasse.ab zu erreichen.</p>
<p>Wenn ich nun</p>
<pre><code>extern EineKlasse ErsteKlasse
</code></pre>
<p>schreibe, erscheint bei der Verwendung von ErsteKlasse in einer anderen Datei: &quot;identifier &quot;ErsteKlasse&quot; is undefined&quot;.</p>
<p>Falls sich meine Programmvorstellung auch anders lösen lässt, bin ich für jeden Hinweis dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454934</guid><dc:creator><![CDATA[Bruce W.]]></dc:creator><pubDate>Wed, 27 May 2015 19:55:05 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 20:21:20 GMT]]></title><description><![CDATA[<p>Hast du mal geguckt, was extern ist und wie man es benutzt? Das Stichwort wurde dir nicht gegeben, damit du wild rätst, wie man damit dein Problem löst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454936</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 27 May 2015 20:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 21:28:27 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Hast du mal geguckt, was extern ist und wie man es benutzt? Das Stichwort wurde dir nicht gegeben, damit du wild rätst, wie man damit dein Problem löst.</p>
</blockquote>
<p>ähm... ich habe mich ziemlich genau an die Lösungsvorschläge auf <a href="http://stackoverflow.com/questions/8910047/issue-declaring-extern-class-object" rel="nofollow">stackoverflow.com</a> gehalten, daher wohl nicht all zu wild geraten. Gebe aber auch zu, gehofft zu haben, das Programm so schnell wie möglich, mit so wenig Kenntnissen wie möglich, fertigstellen zu können. Werde mich wohl dennoch vertieft mit der Materie beschäftigen müssen.</p>
<p>Danke für die Hinweise und Tipps.</p>
<p>Gruss Batman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454945</guid><dc:creator><![CDATA[Bruce W.]]></dc:creator><pubDate>Wed, 27 May 2015 21:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellte Klassen in aderer .cpp verwenden on Wed, 27 May 2015 22:03:13 GMT]]></title><description><![CDATA[<p>Dann sag doch mal konkret, was du gemacht hast. Du zeigst nicht den Problemcode, sondern sagst bloß, dass du irgendwo &quot; <code>extern EineKlasse ErsteKlasse</code> &quot; geschrieben hättest. Was an sich funktionieren könnte, wenn man es richtig (insbesondere an der richtigen Stelle) macht. Da es bei dir nicht funktioniert, hast du es wohl falsch gemacht. Wenn du uns aber nicht genau sagst, was du genau gemacht hast, können wir auch nicht genauer helfen.</p>
<p>Bisher sehe ich auch nirgendwo ein globales Objekt vom Typ EineKlasse, bloß lauter funktionslokale Objekte, die nichts weiter miteinander zu tun haben, daher kann ich nicht sagen, wo eine Bekanntmachung dieses Objekts überhaupt angebracht wäre, da es kein passendes Objekt in deinem Programm gibt. Ich hege den Verdacht, dass du den Unterschied zwischen einer Klasse und einem Objekt einer Klasse nicht richtig verstehst. Eine Klasse ist eine Vorlage. Eine lexikalische Beschreibung. Ein Kochrezept. Ein Objekt ist eine konkrete Instanzierung einer Klasse. Ein Gericht, dass nach diesem Rezept zubereitet wurde. Davon kann es viele geben und sie haben nichts miteinander zu tun, selbst wenn du ihnen den gleichen Namen gibst. Wenn du deine Suppe umrührst, passiert nichts mit der Suppe auf meinem Teller, außer deine Suppe wäre dieselbe (<a href="http://www.spiegel.de/kultur/zwiebelfisch/zwiebelfisch-abc-dasselbe-das-gleiche-a-311593.html" rel="nofollow">und nicht bloß die gleiche</a>!) Suppe wie meine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454950</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 27 May 2015 22:03:13 GMT</pubDate></item></channel></rss>