<?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[std:map als globale variable]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin immernoch dabei eine Applikation zu schreiben, die anhand von Informationen aus einer Logdatei statistiken erstellt.<br />
Dabei muss ich in einer Logdatei die Vorkommen von bestimmten Schlüsselwörtern zählen.<br />
Meine Idee dabei ist es, dass ich als Datenstruktur eine Hashtablle/map benutze:<br />
Schlüsselwort -&gt; Anzahl<br />
Dabei ist der Algorithmus denkbar einfach:</p>
<pre><code>falls HashTabelle[Schlüsselwort] existiert -&gt; erhöhe die Anzahl
ansonsten: Erzeuge neuen Eintrag in der Tabelle und erhöhe Anzahl um 1.
</code></pre>
<p>Dafür habe ich nun eine Klasse samt Headerdatei.<br />
Header:</p>
<pre><code class="language-cpp">class LogfileparserKeyWords: public Logger{
		std::map &lt;string, int&gt; ResultHashTable;

	public:

		Logfileparser_FhrzgStats();
		~Logfileparser_FhrzgStats();
		void parseInFile(char* pathFile);
		void printHashTable();

	};
</code></pre>
<p>und cpp:</p>
<pre><code class="language-cpp">namespace Logger{

	LogfileparserKeyWords::LogfileparserKeyWords() {

		// TODO Auto-generated constructor stub
	}

	LogfileparserKeyWords::~LogfileparserKeyWords() {
		// TODO Auto-generated destructor stub

	}
	void LogfileparserKeyWords::testClass(){
		ResultHashTable[&quot;Schlüssel&quot;]=1;
		std::cout &lt;&lt; &quot;das ist ein test&quot; &lt;&lt; std::endl;
		;
	}
</code></pre>
<p>main:</p>
<pre><code class="language-cpp">LogfileparserKehWords* stats;
stats-&gt;testClass();
</code></pre>
<p>Also zum einen sieht man schon, dass ich eine Klasse &quot;Logger&quot; als Basisklasse habe. Ich benutzte sie im Moment noch nciht, aber das ist Vorgabe, dass meine Klasse sich da in dieser Hierarchie einreihen muss. Ausserdem werde ich sie evtl später benutzen.<br />
Ich nehme an, dass des der Grund ist, dass ich in der main die Klasse nur als Referenz aurufen kann, ansonsten kriege ich eine meldung, dass ich keine abstrakte Klasse aurufen kann. Obwohl meine Klasse ja nicht Abstrakt ist.<br />
Naja und das Hauptproblem ist gerade, dass irgendwas mit der Benutzung der Hashtabelle nicht funktioniert. Das Programm stürzt ab, sobald ich die benutzten möchte. Hab die Hashtabelle schon mit und ohne static deklariert und es scheint keinen Unterschied zu machen.<br />
Kann mir jmd vllt sagen, ob ich grundsätzlich was falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307875/std-map-als-globale-variable</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 09:31:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307875.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Sep 2012 13:27:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 13:27:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin immernoch dabei eine Applikation zu schreiben, die anhand von Informationen aus einer Logdatei statistiken erstellt.<br />
Dabei muss ich in einer Logdatei die Vorkommen von bestimmten Schlüsselwörtern zählen.<br />
Meine Idee dabei ist es, dass ich als Datenstruktur eine Hashtablle/map benutze:<br />
Schlüsselwort -&gt; Anzahl<br />
Dabei ist der Algorithmus denkbar einfach:</p>
<pre><code>falls HashTabelle[Schlüsselwort] existiert -&gt; erhöhe die Anzahl
ansonsten: Erzeuge neuen Eintrag in der Tabelle und erhöhe Anzahl um 1.
</code></pre>
<p>Dafür habe ich nun eine Klasse samt Headerdatei.<br />
Header:</p>
<pre><code class="language-cpp">class LogfileparserKeyWords: public Logger{
		std::map &lt;string, int&gt; ResultHashTable;

	public:

		Logfileparser_FhrzgStats();
		~Logfileparser_FhrzgStats();
		void parseInFile(char* pathFile);
		void printHashTable();

	};
</code></pre>
<p>und cpp:</p>
<pre><code class="language-cpp">namespace Logger{

	LogfileparserKeyWords::LogfileparserKeyWords() {

		// TODO Auto-generated constructor stub
	}

	LogfileparserKeyWords::~LogfileparserKeyWords() {
		// TODO Auto-generated destructor stub

	}
	void LogfileparserKeyWords::testClass(){
		ResultHashTable[&quot;Schlüssel&quot;]=1;
		std::cout &lt;&lt; &quot;das ist ein test&quot; &lt;&lt; std::endl;
		;
	}
</code></pre>
<p>main:</p>
<pre><code class="language-cpp">LogfileparserKehWords* stats;
stats-&gt;testClass();
</code></pre>
<p>Also zum einen sieht man schon, dass ich eine Klasse &quot;Logger&quot; als Basisklasse habe. Ich benutzte sie im Moment noch nciht, aber das ist Vorgabe, dass meine Klasse sich da in dieser Hierarchie einreihen muss. Ausserdem werde ich sie evtl später benutzen.<br />
Ich nehme an, dass des der Grund ist, dass ich in der main die Klasse nur als Referenz aurufen kann, ansonsten kriege ich eine meldung, dass ich keine abstrakte Klasse aurufen kann. Obwohl meine Klasse ja nicht Abstrakt ist.<br />
Naja und das Hauptproblem ist gerade, dass irgendwas mit der Benutzung der Hashtabelle nicht funktioniert. Das Programm stürzt ab, sobald ich die benutzten möchte. Hab die Hashtabelle schon mit und ohne static deklariert und es scheint keinen Unterschied zu machen.<br />
Kann mir jmd vllt sagen, ob ich grundsätzlich was falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249394</guid><dc:creator><![CDATA[mo9ua]]></dc:creator><pubDate>Fri, 07 Sep 2012 13:27:13 GMT</pubDate></item><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 13:46:08 GMT]]></title><description><![CDATA[<p>Du hast halt kein Objekt vorliegen, sondern nur einen Zeiger auf Müll. Klar stürzt das ab, wenn du auf diesen Müll zugreifst.</p>
<p>Du musst eben dafür sorgen, dass deine Klasse nicht mehr abstrakt ist, dann kannst du auch konkrete Objekte erstellen. Da die Vorgabe ist, von Logger zu erben, musst du dafür die Methoden implementieren, die in Logger pure virtual sind.</p>
<p>P.S.: Machen deine Konstruktoren und Destruktoren auch irgendwas oder hast du die bloß deklariert, weil du mal gesehen hast, dass ein cooler Programmierer das so gemacht hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249401</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 07 Sep 2012 13:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 14:05:38 GMT]]></title><description><![CDATA[<blockquote>
<p>P.S.: Machen deine Konstruktoren und Destruktoren auch irgendwas oder hast du die bloß deklariert, weil du mal gesehen hast, dass ein cooler Programmierer das so gemacht hat?</p>
</blockquote>
<p>Eher das zweitere ;)) Bzw. die wurden von Eclipe angelegt und ich dachte mir, dass ich sie vllt später noch benutzten könnte. Den Konstruktor zumindest.</p>
<p>Also die Basisklasse hat nur den Destruktor als virtual in der public area deklariert und eine Unmenge an methoden in der protected area, soll ich dann alle bei mir implementieren, also public und protected?<br />
Sind viele, die ich nicht wirklich brauche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249407</guid><dc:creator><![CDATA[mo9ua]]></dc:creator><pubDate>Fri, 07 Sep 2012 14:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 14:10:36 GMT]]></title><description><![CDATA[<p>mo9ua schrieb:</p>
<blockquote>
<p>Also die Basisklasse hat nur den Destruktor als virtual in der public area deklariert und eine Unmenge an methoden in der protected area, soll ich dann alle bei mir implementieren, also public und protected?<br />
Sind viele, die ich nicht wirklich brauche.</p>
</blockquote>
<p>Nicht die virtuellen, sondern die rein virtuellen. Die mit <code>= 0</code> . Und nimm dir mal ein Lehrbuch zur Hand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249408</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 07 Sep 2012 14:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 14:35:27 GMT]]></title><description><![CDATA[<p>Ja hab schon zwei neben mir liegen, aber da programmiert man ja selber &quot;from the scratch&quot; und ich darf mich mit legacy code rumschlagen.<br />
Also ich hab in der Basisklasse ca. 10 methode, die die Form &quot; virtual func() =0&quot; haben. 90% davon brauche ich nicht, weil meine Funktion wesentlich einfach ist. soll ich dann einfach leere Funktionsrümpfe reinschreiben oder gibt es bessere ideen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249410</guid><dc:creator><![CDATA[mo9ua]]></dc:creator><pubDate>Fri, 07 Sep 2012 14:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to std:map als globale variable on Fri, 07 Sep 2012 15:03:43 GMT]]></title><description><![CDATA[<p>mo9ua schrieb:</p>
<blockquote>
<p>Ja hab schon zwei neben mir liegen, aber da programmiert man ja selber &quot;from the scratch&quot; und ich darf mich mit legacy code rumschlagen.</p>
</blockquote>
<p>Na und? Dein Problem ist einfach, dass du keine Ahnung hast und wild rumprobierst anstatt dir das Wissen anzueignen.</p>
<blockquote>
<p>Also ich hab in der Basisklasse ca. 10 methode, die die Form &quot; virtual func() =0&quot; haben. 90% davon brauche ich nicht, weil meine Funktion wesentlich einfach ist. soll ich dann einfach leere Funktionsrümpfe reinschreiben oder gibt es bessere ideen?</p>
</blockquote>
<p>Das kann man nicht so ohne weiteres beurteilen, aber wenn leere Funktionsrümpfe reichen würde ich damit mal anfangen. Dann stellt sich aber auch die Frage, warum die Basisklasse nicht schon selbst leere Funktionsrümpfe beinhaltet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2249415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2249415</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 07 Sep 2012 15:03:43 GMT</pubDate></item></channel></rss>