<?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[TimingTool]]></title><description><![CDATA[<p>Hey Leute.<br />
Hab mir mal ein kleines TimingTool gemacht, welches System unabhängig laufen soll.<br />
Habs unter Windows ausprobiert und da läuft es vernüptig und au so wie es soll.</p>
<p>Meine Fragen:<br />
1.) Wenn ihr ein anderes System als Windows habt probiert das mal bitte aus, obs auch da Funktioniert^^</p>
<p>2.) Was halltet ihr von dem Code?</p>
<p>Kleine Anmerkung:<br />
Die Zeitangabe wird dem Timer in Minuten übergeben^^</p>
<p>So hier mal der Code.<br />
Hab die Klassen definition von der declaration getrennt.</p>
<p>Timer.hpp</p>
<pre><code class="language-cpp">// Timer.hpp
#ifndef TIMER_HPP_
#define TIMER_HPP_

#ifdef __WIN32__
   #include &lt;windows.h&gt;
#elif defined(_POSIX_VERSION)
   #include &lt;unistd.h&gt;
#else
   #error Unsupported platform!
#endif

template &lt;class T&gt;
class Timer
{
private:
    T Time;
public:
    Timer();
    Timer(T Time);
    ~Timer();
    T getTime() const;
    void setTime(T Time);
    void Start();
};

#include &quot;TimerDef.hpp&quot;

// Vordefinierte Timer
typedef Timer&lt;int&gt; nTimer;
typedef Timer&lt;double&gt; dTimer;

#endif // TIMER_HPP_
</code></pre>
<p>TimerDef.hpp</p>
<pre><code class="language-cpp">// TimerDef.hpp
#ifndef TIMER_DEF_HPP_
#define TIMER_DEF_HPP_

//----------&gt; Konstruktoren &lt;----------//
template &lt;class T&gt;
Timer&lt;T&gt;::Timer()
{
}

template &lt;class T&gt;
Timer&lt;T&gt;::Timer(T Time)
{
    this-&gt;Time = Time;
}

//----------&gt; Destruktoren &lt;----------//
template &lt;class T&gt;
Timer&lt;T&gt;::~Timer()
{
}

//----------&gt; Getter &lt;----------//
template &lt;class T&gt;
T Timer&lt;T&gt;::getTime() const
{
    return this-&gt;Time;
}

//----------&gt; Setter &lt;----------//
template &lt;class T&gt;
void Timer&lt;T&gt;::setTime(T Time)
{
    this-&gt;Time = Time;
}

//----------&gt; Andere &lt;----------//
template &lt;class T&gt;
void Timer&lt;T&gt;::Start()
{
    #ifdef __WIN32__
       Sleep(this-&gt;Time*60*1000);
    #elif defined(_POSIX_VERSION)
       sleep(this-&gt;Time*60*1000);
    #else
       #error Unsupported platform!
    #endif
}

//----------&gt;&gt; ENDE! &lt;&lt;----------//

#endif // TIMER_DEF_HPP_
</code></pre>
<p>Falls ihr das ausprobieren wollt unter dem anderem System oder kucken wollt obs läuft hab ich auch ne Main.cpp dazu gebastelt, is ja au klar zum ausprobieren obs überhaupt geht^^</p>
<p>Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Timer.hpp&quot;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;Start des Programmes&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Zeit Stellen...&quot; &lt;&lt; endl;

    nTimer* UHR = new nTimer(1);

    cout &lt;&lt; &quot;Läuft über in den Schlaf-Modus...&quot; &lt;&lt; endl;

    UHR-&gt;Start();

    cout &lt;&lt; &quot;Schlaf-Modus Beendet!&quot; &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Freu mich auf eure Antworten!<br />
Mfg Wikinger75</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240703/timingtool</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 19:05:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240703.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 May 2009 15:18:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 15:18:16 GMT]]></title><description><![CDATA[<p>Hey Leute.<br />
Hab mir mal ein kleines TimingTool gemacht, welches System unabhängig laufen soll.<br />
Habs unter Windows ausprobiert und da läuft es vernüptig und au so wie es soll.</p>
<p>Meine Fragen:<br />
1.) Wenn ihr ein anderes System als Windows habt probiert das mal bitte aus, obs auch da Funktioniert^^</p>
<p>2.) Was halltet ihr von dem Code?</p>
<p>Kleine Anmerkung:<br />
Die Zeitangabe wird dem Timer in Minuten übergeben^^</p>
<p>So hier mal der Code.<br />
Hab die Klassen definition von der declaration getrennt.</p>
<p>Timer.hpp</p>
<pre><code class="language-cpp">// Timer.hpp
#ifndef TIMER_HPP_
#define TIMER_HPP_

#ifdef __WIN32__
   #include &lt;windows.h&gt;
#elif defined(_POSIX_VERSION)
   #include &lt;unistd.h&gt;
#else
   #error Unsupported platform!
#endif

template &lt;class T&gt;
class Timer
{
private:
    T Time;
public:
    Timer();
    Timer(T Time);
    ~Timer();
    T getTime() const;
    void setTime(T Time);
    void Start();
};

#include &quot;TimerDef.hpp&quot;

// Vordefinierte Timer
typedef Timer&lt;int&gt; nTimer;
typedef Timer&lt;double&gt; dTimer;

#endif // TIMER_HPP_
</code></pre>
<p>TimerDef.hpp</p>
<pre><code class="language-cpp">// TimerDef.hpp
#ifndef TIMER_DEF_HPP_
#define TIMER_DEF_HPP_

//----------&gt; Konstruktoren &lt;----------//
template &lt;class T&gt;
Timer&lt;T&gt;::Timer()
{
}

template &lt;class T&gt;
Timer&lt;T&gt;::Timer(T Time)
{
    this-&gt;Time = Time;
}

//----------&gt; Destruktoren &lt;----------//
template &lt;class T&gt;
Timer&lt;T&gt;::~Timer()
{
}

//----------&gt; Getter &lt;----------//
template &lt;class T&gt;
T Timer&lt;T&gt;::getTime() const
{
    return this-&gt;Time;
}

//----------&gt; Setter &lt;----------//
template &lt;class T&gt;
void Timer&lt;T&gt;::setTime(T Time)
{
    this-&gt;Time = Time;
}

//----------&gt; Andere &lt;----------//
template &lt;class T&gt;
void Timer&lt;T&gt;::Start()
{
    #ifdef __WIN32__
       Sleep(this-&gt;Time*60*1000);
    #elif defined(_POSIX_VERSION)
       sleep(this-&gt;Time*60*1000);
    #else
       #error Unsupported platform!
    #endif
}

//----------&gt;&gt; ENDE! &lt;&lt;----------//

#endif // TIMER_DEF_HPP_
</code></pre>
<p>Falls ihr das ausprobieren wollt unter dem anderem System oder kucken wollt obs läuft hab ich auch ne Main.cpp dazu gebastelt, is ja au klar zum ausprobieren obs überhaupt geht^^</p>
<p>Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Timer.hpp&quot;
using namespace std;

int main()
{
    cout &lt;&lt; &quot;Start des Programmes&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Zeit Stellen...&quot; &lt;&lt; endl;

    nTimer* UHR = new nTimer(1);

    cout &lt;&lt; &quot;Läuft über in den Schlaf-Modus...&quot; &lt;&lt; endl;

    UHR-&gt;Start();

    cout &lt;&lt; &quot;Schlaf-Modus Beendet!&quot; &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Freu mich auf eure Antworten!<br />
Mfg Wikinger75</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708528</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Sun, 10 May 2009 15:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 15:20:22 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708531</guid><dc:creator><![CDATA[comment]]></dc:creator><pubDate>Sun, 10 May 2009 15:20:22 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 16:06:41 GMT]]></title><description><![CDATA[<p>1. Das gehört eher ins Projekt Forum.<br />
2. Du kapselst Sleep mit einem undeutlichen Namen.<br />
3. Ein Timer schläft nicht, wenn ich ihn starte, sondern gibt mir in Intervallen Signale.<br />
4. Wenn wir gerade den Start erwähnen, die Funktion dürfte wohl konstant sein.<br />
5. Wenn man Timer&lt;double&gt; verwendet, bekommt man mit Sicherheit eine Warnung, wegen der Konvertierung von double zu int.<br />
6. Präprozessor Anweisungen im Code sind sehr unschön, gab erst letztens ein Thread dazu.<br />
7. Wieso legst du den Timer in der main Funktion per new an? Auf dem Stack hätte da gereicht.<br />
8. Meisterleistung, wie lange hast daran gearbeitet? 5 Minuten? <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 />
9. Leg dir ein Linux zu, kannst ja über GRUB ein Dual-Boot machen, dann kannst du selber testen.<br />
10. Ich schliesse mich meinem Vorgänger an -&gt; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708543</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 10 May 2009 16:06:41 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 16:07:08 GMT]]></title><description><![CDATA[<p>Ganz toll :eek</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708545</guid><dc:creator><![CDATA[comment2]]></dc:creator><pubDate>Sun, 10 May 2009 16:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 16:09:42 GMT]]></title><description><![CDATA[<p>lolololo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708547</guid><dc:creator><![CDATA[comment3]]></dc:creator><pubDate>Sun, 10 May 2009 16:09:42 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 16:28:48 GMT]]></title><description><![CDATA[<p>Irgentwie muss man doch auf das System prüfen und das ist halt eben nur durch Präprosezor anweisung machbar^^<br />
Hmm naja stimmt Timer ist ein wenig doof.<br />
Hmm wenn double nit geht kann ich ja aus der ne Normale Klasse machen nua mit int wenns bei double nen error gibt^^</p>
<p>Warum ich das per new mache?<br />
Ka gewohnheit^^<br />
Mfg Wikinger75!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708555</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Sun, 10 May 2009 16:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 17:26:55 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Ka gewohnheit^^<br />
Mfg Wikinger75!</p>
</blockquote>
<p>Warum es Memory Leak, Segfaults und Buffer overflow gibt?<br />
JA KLAR! GEWOHNHEIT! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708572</guid><dc:creator><![CDATA[master of comments]]></dc:creator><pubDate>Sun, 10 May 2009 17:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Sun, 10 May 2009 18:29:23 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Irgentwie muss man doch auf das System prüfen und das ist halt eben nur durch Präprosezor anweisung machbar^^</p>
</blockquote>
<p>Lies was ich gesagt habe. Ich sagte Präprozessor im Code sei schlecht nicht Präprozessor an sich. Man lagert solche Dinge aus. Ich habe mal den Thread rausgesucht:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-236515.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-236515.html</a></p>
<p>Startet mit etwas anderem, aber geht schnell ins entsprechende Thema über.</p>
<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Hmm wenn double nit geht kann ich ja aus der ne Normale Klasse machen nua mit int wenns bei double nen error gibt^^</p>
</blockquote>
<p>Nochmals, lies was ich gesagt habe. Es gibt keinen Fehler sondern eine Warnung. Aber sag mal, hast du das nicht mal probiert? Hast du überhaupt die jeweiligen Dokumentationen zu <code>Sleep</code> gelesen? Man könnte fast soweit gehen, hast du dir überhaupt was überlegt?</p>
<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Warum ich das per new mache?<br />
Ka gewohnheit^^</p>
</blockquote>
<p>Dann gewöhn dir immerhin an, dass man zu jedem <code>new</code> ein <code>delete</code> macht.</p>
<p>Ich frag mich mehr und mehr, was das eigentlich soll.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708604</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 10 May 2009 18:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 12:00:34 GMT]]></title><description><![CDATA[<p>Hmm joa eigentlich schon^^<br />
Ich hab das delete vergesen, weil ich das von wx her gewohnt bin...<br />
Hmm guter Thread...<br />
Kapier aber nicht wirklich das schlimme dadran...<br />
Ich glaub wir lassens hier einfach ma^^</p>
<p>Mfg Wikinger75!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708933</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 11 May 2009 12:00:34 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 12:12:10 GMT]]></title><description><![CDATA[<p>Was soll Timer eigentlich machen?</p>
<blockquote>
<p>Wenn ihr ein anderes System als Windows habt probiert das mal bitte aus, obs auch da Funktioniert^^</p>
</blockquote>
<p>Installiere doch einfach Linux oder so in einer virtuellen Maschine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1708947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1708947</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 11 May 2009 12:12:10 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 13:42:03 GMT]]></title><description><![CDATA[<p>es gibt noch memory leaks wenn das programm beendet wird? dachte windows räumt das automatisch auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709001</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Mon, 11 May 2009 13:42:03 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 13:42:10 GMT]]></title><description><![CDATA[<p>Ist das Ernst gemeint? Na dein Code will ich nicht sehen! Zu jedem new gehört ein delete, es gibt keine Gewissheit wann und ob überhaupt das OS deinen Speicher freigibt welchen du mal angefordert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709006</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 11 May 2009 13:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 13:47:50 GMT]]></title><description><![CDATA[<p>komisch dass ich in Qt Anwendungsbeispiele noch nie delete Schlüsselwort gesehen hab, aber lauter new-Schlüsselwörter. Anscheinend räumt Qt das alles automatisch auf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709010</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Mon, 11 May 2009 13:47:50 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 13:51:09 GMT]]></title><description><![CDATA[<p>xBlackKnightx schrieb:</p>
<blockquote>
<p>komisch dass ich in Qt Anwendungsbeispiele noch nie delete Schlüsselwort gesehen hab, aber lauter new-Schlüsselwörter. Anscheinend räumt Qt das alles automatisch auf</p>
</blockquote>
<p>Die meisten QT Objekte haben wie die meisten wxWidgets Objekte einen Referenzzähler dahinter. Daher muss man sie sogar per <code>new</code> anlegen, sonst gibt es massives undefiniertes Verhalten. Diese Objekte werden dann automatisch per delete freigegeben.<br />
Aber wenn du ein Objekt von einer eigenen Klasse, wie hier zum Beispiel der Timer, erstellst, dann musst du den auch selber freigeben. Das ist unter QT nicht anders.</p>
<p>Wieder mal ein typisches Beispiel, wieso man zuerst richtig C++ lernen sollte, bevor man an die GUI Programmierung oder ähnliches geht ...</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709013</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 11 May 2009 13:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 14:38:57 GMT]]></title><description><![CDATA[<p>hm äh ich hätt schon gern einen sauberen code. C++ Grundlagen lesen hab ich schon, nur kann ich mir nicht alles merken.</p>
<p>Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?</p>
<p>Und die Klassen die ich neu definiere, müssen nur von diesem erben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709036</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Mon, 11 May 2009 14:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 14:41:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?</p>
</blockquote>
<p>häh? was willst du? Oo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709040</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 11 May 2009 14:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 14:59:09 GMT]]></title><description><![CDATA[<p>xBlackKnightx schrieb:</p>
<blockquote>
<p>hm äh ich hätt schon gern einen sauberen code. C++ Grundlagen lesen hab ich schon, nur kann ich mir nicht alles merken.</p>
<p>Wo krieg ich einen guten fertigen Mechanismus her zum deleten ?</p>
<p>Und die Klassen die ich neu definiere, müssen nur von diesem erben?</p>
</blockquote>
<p><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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">object_name* object = new object_name();

//mach was damit

delete object_name;
</code></pre>
<p>fang erstmal damit an und poste nicht so einen käse :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709045</guid><dc:creator><![CDATA[jhonnyDeppe]]></dc:creator><pubDate>Mon, 11 May 2009 14:59:09 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:05:04 GMT]]></title><description><![CDATA[<p>Ich glaube eher er wollte wissen wie der mechanismus bei wx und qt geht also wie man so was machen kann das man new machen muss aber selber dan kein delete mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709046</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 11 May 2009 15:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:06:16 GMT]]></title><description><![CDATA[<p>jhonnyDeppe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">object_name* object = new object_name();
//mach was damit
delete object_name;
</code></pre>
<p>fang erstmal damit an und poste nicht so einen käse :p</p>
</blockquote>
<p><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 <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="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> auch nicht schlecht wäre</p>
<pre><code class="language-cpp">object_name* object = new object_name();
//mach was damit
delete object;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709047</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 May 2009 15:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:06:17 GMT]]></title><description><![CDATA[<p>Ich will alle Klassen da reinbinden. Damit ich nicht mehr um delete kümmern muss. Sowas ist langweilig. Sowas wie das hier, aber es soll besseres geben. Wo nur?</p>
<pre><code class="language-cpp">template &lt;class T&gt; class refcnt_ptr {
protected:
    // a helper class that holds the pointer to the managed object
    // and its reference count
    class Holder {
    public:
        Holder( T* ptr) : ptr_(ptr), count_(1) {};
        ~Holder() { delete ptr_;};

        T* ptr_;
        unsigned count_;
    };

    Holder* h_;

public:
    // ctor of refcnt_ptr (p must not be NULL)
    explicit refcnt_ptr( T* p) : h_(new Holder(p)) {}
    // dtor of refcnt_ptr
    ~refcnt_ptr() { if (--h_-&gt;count_ == 0) delete h_; }
    // copy and assignment of refcnt_ptr
    refcnt_ptr (const refcnt_ptr&lt;T&gt;&amp; right) : h_(right.h_) {
        ++h_-&gt;count_;
    }
    refcnt_ptr&lt;T&gt;&amp; operator= (const refcnt_ptr&lt;T&gt;&amp; right) {
        ++right.h_-&gt;count_;
        if (--h_-&gt;count_ == 0) delete h_;
        h_ = right.h_;
        return *this;
    }
    refcnt_ptr&lt;T&gt;&amp; operator= (refcnt_ptr&lt;T&gt;&amp; right) {
        ++right.h_-&gt;count_;
        if (--h_-&gt;count_ == 0) delete h_;
        h_ = right.h_;
        return *this;
    }
    // access to the managed object
    T* operator-&gt; () { return h_-&gt;ptr_; }
    T&amp; operator* ()  { return *h_-&gt;ptr_; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1709048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709048</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Mon, 11 May 2009 15:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:06:19 GMT]]></title><description><![CDATA[<p>Nennt sich Garbage Collection. Aber vielleicht ist die Sprache Java eher was fuer dich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709049</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 11 May 2009 15:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:16:27 GMT]]></title><description><![CDATA[<p>Oder du nutzt die boost shared_ptr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709052</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 11 May 2009 15:16:27 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:27:09 GMT]]></title><description><![CDATA[<p>Wie Firefighter sagt, Boost.SmartPr und daraus den <code>shared_ptr</code> :<br />
<a href="http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/smart_ptr.htm" rel="nofollow">http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/smart_ptr.htm</a></p>
<p>Allerdings, wenn du alle Objekte aller Klassen damit verwalten willst, dann machst du was falsch. Ein <code>boost::shared_ptr</code> ist nicht die super Lösung zu allem, vor allem nicht wenn du nur zu faul bist, ein wenig selber zu überlegen. Dann wäre vielleicht eher ein Sprachwechsel optimal. Alternativen wären zum Beispiel Java oder C#.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709057</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 11 May 2009 15:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:34:14 GMT]]></title><description><![CDATA[<p>weil es sonst quick&amp;dirty wäre?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709065</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Mon, 11 May 2009 15:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:35:42 GMT]]></title><description><![CDATA[<p>Java macht aber keine Exe^^<br />
C# was ich gar nicht, glaub aber dafür braucht man des NET Framework, das is genauso kacke... Alles zu abhängig xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709068</guid><dc:creator><![CDATA[Wikinger75]]></dc:creator><pubDate>Mon, 11 May 2009 15:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to TimingTool on Mon, 11 May 2009 15:38:53 GMT]]></title><description><![CDATA[<p>Wikinger75 schrieb:</p>
<blockquote>
<p>Java macht aber keine Exe^^<br />
C# was ich gar nicht, glaub aber dafür braucht man des NET Framework, das is<br />
genauso kacke... Alles zu abhängig xD</p>
</blockquote>
<p>Bei mir gibts mit C++ auch keine exe :p</p>
<p>Naja also ich finde sowas ist wirklich keine Empfehlung per se...<br />
Für mein größtes Projekt habe ich sowas gemacht da ich an sehr sehr sehr sehr sehr vielen Stellen sonst hätte deleten müssen:</p>
<pre><code class="language-cpp">class sptr_target
{
      int eZugriffe;

protected:
      ptr_target() : eZugriffe(0) {}

      void registerUser() { eZugriffe++; }
      bool unregisterUser() { 
            if(!--eZugriffe) {
                 delete this;
                 return true;
            }
            return false;
      }

      friend class smart_ptr;
};

//T muss ableitung von sptr_target sein!
template&lt;typename T&gt;
class smart_ptr
{
      T* eTarget;

public:
      smart_ptr() : eTarget(0) {}
      //mehr sinnvolle CTors...

      smart_ptr&amp; opertor=(sptr_target* t){
           if( eTarget != t ) return *this; //Sonst wird t gelöscht falls this einziger Pointer    

           if( eTarget ){
                eTarget-&gt;unregisterUser();
                eTarget = t;
                eTarget-&gt;registerUser();
          }
          return this;     
      }

      //Noch mehr operatoren wie -&gt; * etc...

};
</code></pre>
<p>Daran gibt es mit Sichreheit viel auszusetzen aber es hat wundervoll funktioniert.<br />
Dass es einen Heap-Zwang gibt ist sicher ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1709071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1709071</guid><dc:creator><![CDATA[Jesus Christ]]></dc:creator><pubDate>Mon, 11 May 2009 15:38:53 GMT</pubDate></item></channel></rss>