<?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[Großes Problem mit Klassen]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe ein Problem, wo ich nicht mehr weiter weiß.</p>
<p>Ich habe eine Klasse mit dem Hauptfenster.</p>
<pre><code class="language-cpp">class CMainDlg
{
public:
    CMainDlg(void);

    CConfig * config;
}
</code></pre>
<p>In dieser Klasse ist ein Pointer auf eine andere Klasse, CConfig. Im Konstruktor der Fensterklasse (CMainDlg) wird config auf new CConfig() gesetzt.</p>
<p>Soweit funzt das auch noch.</p>
<p>Aber wenn ich dann in der CMainDlg eine andere Klasse mit new aufmache, ist die config-Variable irgendwie zerstört. &lt;Schlechter Ptr&gt;.</p>
<p>Kann ich die Config-Klasse auch ohne einen Pointer als Membervariable in der Fensterklasse instanzieren?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214160/großes-problem-mit-klassen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 18:40:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214160.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 May 2008 12:08:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:08:27 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe ein Problem, wo ich nicht mehr weiter weiß.</p>
<p>Ich habe eine Klasse mit dem Hauptfenster.</p>
<pre><code class="language-cpp">class CMainDlg
{
public:
    CMainDlg(void);

    CConfig * config;
}
</code></pre>
<p>In dieser Klasse ist ein Pointer auf eine andere Klasse, CConfig. Im Konstruktor der Fensterklasse (CMainDlg) wird config auf new CConfig() gesetzt.</p>
<p>Soweit funzt das auch noch.</p>
<p>Aber wenn ich dann in der CMainDlg eine andere Klasse mit new aufmache, ist die config-Variable irgendwie zerstört. &lt;Schlechter Ptr&gt;.</p>
<p>Kann ich die Config-Klasse auch ohne einen Pointer als Membervariable in der Fensterklasse instanzieren?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516887</guid><dc:creator><![CDATA[ViperBytes]]></dc:creator><pubDate>Mon, 26 May 2008 12:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:12:49 GMT]]></title><description><![CDATA[<p>Bist du sicher, dass der Zeiger, den du dort hast gültig ist?</p>
<p>Wär vlt. noch hilfreich den Konstruktor zu sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516890</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 26 May 2008 12:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:26:16 GMT]]></title><description><![CDATA[<p>Das Problem ist nicht der Constructor.</p>
<pre><code class="language-cpp">MainDlg::MainDlg(void)
{
    config = new Config();
}
</code></pre>
<p>Sondern das Ding da:</p>
<pre><code class="language-cpp">// nur so, ist aber mit im header dabei.
Config * CSettingsDlg::config;

CSettingsDlg::CSettingsDlg(Config * c)
{
    config = c;
}
</code></pre>
<p>Der SettingsDlg will die Klasse ja auch. Das ist ja der Einstellungen-Dialog, der soll da was verändern. Ich habe mal einen BreakPoint gesetzt. Die Variable c ist noch ok, config aber nicht.</p>
<p>hoffentlich könnt ihr mir helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516897</guid><dc:creator><![CDATA[ViperBytes]]></dc:creator><pubDate>Mon, 26 May 2008 12:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:28:44 GMT]]></title><description><![CDATA[<p>Ist CSettingsDlg von CMainDlg abgeleitet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516898</guid><dc:creator><![CDATA[LordJaxom_lg]]></dc:creator><pubDate>Mon, 26 May 2008 12:28:44 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:32:24 GMT]]></title><description><![CDATA[<p>bein.</p>
<p>Beide klassen sind völlig für sich. das ist auch kein mfc (CWnd) oder so. alles reine WinAPI. aber das tut nix zur sache. Config auch nicht abgeleitet, alle Klassen sind so für sich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516902</guid><dc:creator><![CDATA[ViperBytes]]></dc:creator><pubDate>Mon, 26 May 2008 12:32:24 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Problem mit Klassen on Mon, 26 May 2008 12:46:04 GMT]]></title><description><![CDATA[<p>Mit dem bisher gesehenen Code kann man nur ins Blaue raten. Mein Verdacht ist der, das bereits das Objekt auf das der Zeiger zeigt destruiert wurde.</p>
<p>Was ich mir vorstellen könnte ist, vereinfacht gesprochen, ein solcher Fall:</p>
<pre><code class="language-cpp">class A {};
class B
{
  private:
    A* a;

  public:
    B()
    : a(new A())
    {}

    ~B()
    {
      delete a;
    }
};

void foo(B b) {}

int main()
{
  B b;
  foo(b);
} // &lt;-- Hier knallt es da der Zeiger zum zweiten mal gelöscht wurde
</code></pre>
<p>Bei der Fehlerbeschreibung gehe ich von der Übergabe als Wert (Copy-By-Value) aus. Im oberen fall wird bei dem Aufruf von foo ein neues Objekt generiert (Mittels Kopierkonstruktors) und am Ende von foo der Destruktor für dieses Objekt aufgerufen... Da der Zeiger 1:1 kopiert wurde wird demzufolge zweimal delete auf den Zeiger aufgerufen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1516911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1516911</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 26 May 2008 12:46:04 GMT</pubDate></item></channel></rss>