<?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[gelöst: Klassen Programmweit nutzen können]]></title><description><![CDATA[<p>Moin moin,</p>
<p>ich habe da ein kleines Problem bei dem ich einfach nicht weiterkomme. Vermutlich denke ich im Moment einfach zu verdreht! <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>Also mein Problem:</p>
<p>Ich möchte in einem Programm von mir, C++ (QT4, programmiert mit Qt Creator unter Linux) eine Klasse mehrfach nutzen:</p>
<p>db_klasse.h</p>
<pre><code class="language-cpp">#ifndef DB_KLASSE_H
#define DB_KLASSE_H

class db_klasse : public QObject
{
    Q_OBJECT
public:
                db_klasse(void);
                ~db_klasse(void);
      bool      open_database();
      void      close_database();
      int       get_data();
private:
    QSqlDatabase    datenbank;
};
 extern db_klasse dbklasse;
#endif
</code></pre>
<p>Nun möchte ich gerne die Klasse db_klasse überall in meinen Quelldateien nutzen können. Also einmal initialisiert und dann in main.cpp / abfrage.cpp / eingabe.cpp und so weiter nutzen können. Wie aber mache ich das?? Ich stehe da im Moment echt auf dem Schlauch.</p>
<p>Wenn ich die Klasse in main.cpp so aufrufe:</p>
<pre><code class="language-cpp">db_klasse *dbklasse = new db_klasse;
</code></pre>
<p>kann ich sie dort nutzen, in anderen Programmteilen (abfrage.cpp / eingabe.cpp) aber nicht. Es ist mir sehr wichtig, dass die Klasse selber nur einmal in meinem Programm initialisiert wird und eben nicht mehrfach.</p>
<p>navy_seabear</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305344/gelöst-klassen-programmweit-nutzen-können</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 00:16:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305344.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jun 2012 17:20:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Sun, 01 Jul 2012 17:44:54 GMT]]></title><description><![CDATA[<p>Moin moin,</p>
<p>ich habe da ein kleines Problem bei dem ich einfach nicht weiterkomme. Vermutlich denke ich im Moment einfach zu verdreht! <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>Also mein Problem:</p>
<p>Ich möchte in einem Programm von mir, C++ (QT4, programmiert mit Qt Creator unter Linux) eine Klasse mehrfach nutzen:</p>
<p>db_klasse.h</p>
<pre><code class="language-cpp">#ifndef DB_KLASSE_H
#define DB_KLASSE_H

class db_klasse : public QObject
{
    Q_OBJECT
public:
                db_klasse(void);
                ~db_klasse(void);
      bool      open_database();
      void      close_database();
      int       get_data();
private:
    QSqlDatabase    datenbank;
};
 extern db_klasse dbklasse;
#endif
</code></pre>
<p>Nun möchte ich gerne die Klasse db_klasse überall in meinen Quelldateien nutzen können. Also einmal initialisiert und dann in main.cpp / abfrage.cpp / eingabe.cpp und so weiter nutzen können. Wie aber mache ich das?? Ich stehe da im Moment echt auf dem Schlauch.</p>
<p>Wenn ich die Klasse in main.cpp so aufrufe:</p>
<pre><code class="language-cpp">db_klasse *dbklasse = new db_klasse;
</code></pre>
<p>kann ich sie dort nutzen, in anderen Programmteilen (abfrage.cpp / eingabe.cpp) aber nicht. Es ist mir sehr wichtig, dass die Klasse selber nur einmal in meinem Programm initialisiert wird und eben nicht mehrfach.</p>
<p>navy_seabear</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227476</guid><dc:creator><![CDATA[navy_seabear]]></dc:creator><pubDate>Sun, 01 Jul 2012 17:44:54 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 17:23:37 GMT]]></title><description><![CDATA[<p>Schau dir einmal das &quot;Singleton Pattern&quot; an. Wahrscheinlich suchst du das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227477</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Tue, 26 Jun 2012 17:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 17:31:38 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>Schau dir einmal das &quot;Singleton Pattern&quot; an. Wahrscheinlich suchst du das.</p>
</blockquote>
<p>Und noch wahrscheinlicher willst Du doch kein Singleton, glaubst aber es zu wollen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227480</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 26 Jun 2012 17:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 17:39:48 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Und noch wahrscheinlicher willst Du doch kein Singleton, glaubst aber es zu wollen...</p>
</blockquote>
<p>Jetzt bin ich wirklich verwirrt.</p>
<p>Ich möchte meine Klasse, welche eine Verbindung zu einer Datenbank aufbaut nur einmal initialisieren.<br />
Danach möchte ich gerne die weiteren Funktionen der Klasse in anderen Programmteilen nutzen und auf die Datenbank zugreifen. Also auch alle initialisierten Variablen der Klasse nutzen können.<br />
Wenn ich dann mein Programm beende, soll die eine erzeugte Klasse und damit alle in ihr enthaltenen Variablen zerstört werden.</p>
<p>NavySeabear</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227484</guid><dc:creator><![CDATA[navy_seabear]]></dc:creator><pubDate>Tue, 26 Jun 2012 17:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 17:55:31 GMT]]></title><description><![CDATA[<p>Wenn nur eine Instanz der Klasse existieren soll, würde ich keine globale Variable empfehlen, sondern stattdessen die Klasse <em>static</em> machen, sodass deine Funktionsaufrufe wie folgt aussehen:</p>
<pre><code class="language-cpp">if (db_klasse.open_database()) {
    // ...
    db_klasse.close_database();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227488</guid><dc:creator><![CDATA[DerCoder]]></dc:creator><pubDate>Tue, 26 Jun 2012 17:55:31 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 17:59:38 GMT]]></title><description><![CDATA[<p>DerCoder schrieb:</p>
<blockquote>
<p>Wenn nur eine Instanz der Klasse existieren soll, würde ich keine globale Variable empfehlen, sondern stattdessen die Klasse <em>static</em> machen, sodass deine Funktionsaufrufe wie folgt aussehen:</p>
<pre><code class="language-cpp">if (db_klasse.open_database()) {
    // ...
    db_klasse.close_database();
}
</code></pre>
</blockquote>
<p>Es wird immer absurder hier..</p>
<p>Für genau so etwas gibt es Zeiger und Referenzen. Es ist wirklich nicht zu schwierig, eine Referenz im Programm herumzureichen. Das macht die Abhängigkeiten zwischen Klassen deutlich und verhindert damit ein Durcheinander.</p>
<pre><code class="language-cpp">struct KlasseDieDieDatenbankBenutzt
{
	explicit KlasseDieDieDatenbankBenutzt(db_klasse &amp;db)
		: m_db(db)
	{
	}

	void machWas()
	{
		cout &lt;&lt; m_db.get_data() &lt;&lt; endl;
	}

private:

	db_klasse &amp;m_db;
};

int main()
{
	db_klasse db;
	KlasseDieDieDatenbankBenutzt benutzer(db);
	benutzer.machWas();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227490</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Tue, 26 Jun 2012 17:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 18:55:27 GMT]]></title><description><![CDATA[<p>navy_seabear schrieb:</p>
<blockquote>
<p>Wenn ich die Klasse in main.cpp so aufrufe:</p>
<pre><code class="language-cpp">db_klasse *dbklasse = new db_klasse;
</code></pre>
</blockquote>
<p>... sagt mir, daß Du ein (gutes) Buch über C++ durcharbeiten solltest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227500</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227500</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 26 Jun 2012 18:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 19:06:00 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>navy_seabear schrieb:</p>
<blockquote>
<p>Wenn ich die Klasse in main.cpp so aufrufe:</p>
<pre><code class="language-cpp">db_klasse *dbklasse = new db_klasse;
</code></pre>
</blockquote>
<p>... sagt mir, daß Du ein (gutes) Buch über C++ durcharbeiten solltest.</p>
</blockquote>
<p>ja, mag sein. Ich muß bestimmt noch viel lernen. Doch hilfreich ist die Antwort nicht wirklich, oder?<br />
Wenn Du eine Lösung weißt, oder mir sagen kannst wie ich es besser oder richtig machen kann, wäre ich Dir sehr Dankbar!<br />
Das würde mich vermutlich auch in meinem Verständnis für C++ weiter bringen.</p>
<p>NavySeabear</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2227505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227505</guid><dc:creator><![CDATA[navy_seabear]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to gelöst: Klassen Programmweit nutzen können on Tue, 26 Jun 2012 19:25:23 GMT]]></title><description><![CDATA[<p>Du hast in bd_klasse.h:</p>
<pre><code class="language-cpp">extern db_klasse dbklasse;
</code></pre>
<p>- Woimmer Du dbklasse verwenden willst mußt Du db_klasse.h inkludieren.<br />
- In einer dieser Dateien mußt Du noch für die eigentliche Instanz sorgen:</p>
<pre><code class="language-cpp">db_klasse dbklasse;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2227511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2227511</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Tue, 26 Jun 2012 19:25:23 GMT</pubDate></item></channel></rss>