<?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[Grundsatzfrage zum inkludieren von Headern]]></title><description><![CDATA[<p>Hallo nochmal !</p>
<p>Als Beispiel sei das Lottoprogramm gegeben, dass Dank eurer kleinen (wenn auch sehr nützlichen) Hilfe reibungslos funktioniert.<br />
Diesmal verlagere ich die Funktionalität in eine Klasse...:</p>
<p>Gegeben sind drei Dateien: main.cpp lotto.h lotto.cpp</p>
<p>Die Headerdatei lotto.h deklariert die Klasse:</p>
<pre><code>#ifndef _LOTTO_H
#define _LOTTO_H

#include &lt;vector&gt;

class Lotto
{
public:
	Lotto();

	void run();

private:
	std::vector&lt;int&gt; liste;
	int zufall;
};
#endif // _LOTTO_H
</code></pre>
<p>-&gt; soweit klar: kein Problem.</p>
<p>Die dazugehörige Datei lotto.cpp beschreibt die Methoden, dazu inkludiert sie lotto.h:</p>
<pre><code>#include &quot;lotto.h&quot;
#include &lt;iostream&gt;
#include &lt;ctime&gt;

Lotto::Lotto()
: zufall(0)
{
	srand(time(NULL));	   // Zufallszahlen vorbereiten

	// Vector init
	for(int i=1; i&lt;=49; ++i)
	{
		liste.push_back(i);
	}
}

void Lotto::run()
{
	// Zahl ziehen ...
	for(int i=0; i&lt;6; ++i)
	{
		std::vector&lt;int&gt;::iterator it = liste.begin();
		zufall = rand() % (49-i);
		it += zufall;			 		   // Iterator zuweisen
		std::cout &lt;&lt; *it &lt;&lt; &quot; &quot;;    	   // ausgeben
		liste.erase(it);		   		   // löschen
	}
}
</code></pre>
<p>-&gt; soweit auch kein Problem .</p>
<p>main.cpp inkludiert die Headerdatei lotto.h (!) und hier in diesem Beispiel auch<br />
lotto.cpp (!) -&gt; anderenfalls lässt sich das Ganze nicht kompilieren, da ein nicht definierter Verweis auf Methoden von lotto.cpp :</p>
<pre><code>#include &quot;lotto.h&quot;
#include &quot;lotto.cpp&quot;		// &lt;---------- !

int main(int argc, char const *argv[])
{
	Lotto *lotto = new Lotto;
	lotto-&gt;run();
	return 0;
}
</code></pre>
<p>Jetzt meine Frage: Ok: Das Programm funktioniert so. Aber ist es überhaupt guter Stil (hier) die lotto.cpp mitzuinkludieren ? In vielen Beispielen, die ich gelesen habe werden lediglich die Header inkludiert (z.B.: einfacher Qt-Dialog)- und wie durch Zauberhand funktioniert das und Header und dazugehörige cpp-Datei finden sich - nur bei mir nicht. Wie gesagt: wenn ich es weglasse schreit der Compiler.<br />
Mache ich etwas falsch oder muss dass hier so sein, da drei Dateien existieren ?<br />
Kompiliert wird mit:<br />
g++ -Wall -std=c++11 main.cpp -o main</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330525/grundsatzfrage-zum-inkludieren-von-headern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 06:12:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330525.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jan 2015 12:54:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Grundsatzfrage zum inkludieren von Headern on Wed, 14 Jan 2015 12:54:07 GMT]]></title><description><![CDATA[<p>Hallo nochmal !</p>
<p>Als Beispiel sei das Lottoprogramm gegeben, dass Dank eurer kleinen (wenn auch sehr nützlichen) Hilfe reibungslos funktioniert.<br />
Diesmal verlagere ich die Funktionalität in eine Klasse...:</p>
<p>Gegeben sind drei Dateien: main.cpp lotto.h lotto.cpp</p>
<p>Die Headerdatei lotto.h deklariert die Klasse:</p>
<pre><code>#ifndef _LOTTO_H
#define _LOTTO_H

#include &lt;vector&gt;

class Lotto
{
public:
	Lotto();

	void run();

private:
	std::vector&lt;int&gt; liste;
	int zufall;
};
#endif // _LOTTO_H
</code></pre>
<p>-&gt; soweit klar: kein Problem.</p>
<p>Die dazugehörige Datei lotto.cpp beschreibt die Methoden, dazu inkludiert sie lotto.h:</p>
<pre><code>#include &quot;lotto.h&quot;
#include &lt;iostream&gt;
#include &lt;ctime&gt;

Lotto::Lotto()
: zufall(0)
{
	srand(time(NULL));	   // Zufallszahlen vorbereiten

	// Vector init
	for(int i=1; i&lt;=49; ++i)
	{
		liste.push_back(i);
	}
}

void Lotto::run()
{
	// Zahl ziehen ...
	for(int i=0; i&lt;6; ++i)
	{
		std::vector&lt;int&gt;::iterator it = liste.begin();
		zufall = rand() % (49-i);
		it += zufall;			 		   // Iterator zuweisen
		std::cout &lt;&lt; *it &lt;&lt; &quot; &quot;;    	   // ausgeben
		liste.erase(it);		   		   // löschen
	}
}
</code></pre>
<p>-&gt; soweit auch kein Problem .</p>
<p>main.cpp inkludiert die Headerdatei lotto.h (!) und hier in diesem Beispiel auch<br />
lotto.cpp (!) -&gt; anderenfalls lässt sich das Ganze nicht kompilieren, da ein nicht definierter Verweis auf Methoden von lotto.cpp :</p>
<pre><code>#include &quot;lotto.h&quot;
#include &quot;lotto.cpp&quot;		// &lt;---------- !

int main(int argc, char const *argv[])
{
	Lotto *lotto = new Lotto;
	lotto-&gt;run();
	return 0;
}
</code></pre>
<p>Jetzt meine Frage: Ok: Das Programm funktioniert so. Aber ist es überhaupt guter Stil (hier) die lotto.cpp mitzuinkludieren ? In vielen Beispielen, die ich gelesen habe werden lediglich die Header inkludiert (z.B.: einfacher Qt-Dialog)- und wie durch Zauberhand funktioniert das und Header und dazugehörige cpp-Datei finden sich - nur bei mir nicht. Wie gesagt: wenn ich es weglasse schreit der Compiler.<br />
Mache ich etwas falsch oder muss dass hier so sein, da drei Dateien existieren ?<br />
Kompiliert wird mit:<br />
g++ -Wall -std=c++11 main.cpp -o main</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437526</guid><dc:creator><![CDATA[morbidMo]]></dc:creator><pubDate>Wed, 14 Jan 2015 12:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage zum inkludieren von Headern on Wed, 14 Jan 2015 12:59:44 GMT]]></title><description><![CDATA[<p><code>g++ -Wall -std=c++11 main.cpp lotto.cpp -o main</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437528</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 14 Jan 2015 12:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage zum inkludieren von Headern on Wed, 14 Jan 2015 13:26:46 GMT]]></title><description><![CDATA[<p>Ah - Ok! ..... so einfach kann es sein : --&gt; klar ! Eventuell sollte ich doch eine IDE benutzen, die das übernimmt ! Danke ! <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/2437539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437539</guid><dc:creator><![CDATA[morbidMo]]></dc:creator><pubDate>Wed, 14 Jan 2015 13:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage zum inkludieren von Headern on Wed, 14 Jan 2015 13:32:26 GMT]]></title><description><![CDATA[<p>Bei der musst du das aber auch in einem Projekt-(Menu/Dialog/Datei/sonstwas) eintragen.</p>
<p>Da reicht für dich auch erstmal ein <em>makefile</em> für <em>make</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437541</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 14 Jan 2015 13:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to Grundsatzfrage zum inkludieren von Headern on Wed, 14 Jan 2015 18:04:43 GMT]]></title><description><![CDATA[<p>morbidMo schrieb:</p>
<blockquote>
<p>Aber ist es überhaupt guter Stil (hier) die lotto.cpp mitzuinkludieren ?</p>
</blockquote>
<p>nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2437578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2437578</guid><dc:creator><![CDATA[großbuchstaben]]></dc:creator><pubDate>Wed, 14 Jan 2015 18:04:43 GMT</pubDate></item></channel></rss>