<?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[Konstruktor mit dem Parameter+Vererbte Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 3 Klassen: Fsm, State, ImportUnprocessedState.</p>
<p>ImportUnprocessedState ist eine verebte Klasse von State.<br />
Mein Konstruktor von Fsm sieh so aus:</p>
<p>Fsm(State* state);</p>
<p>Definition:</p>
<pre><code class="language-cpp">Fsm::Fsm(State* state)
{
m_state = state; ////State* m_state;

}
</code></pre>
<p>Ich möchte jetzt ein Object der Fsm Klasse erstellen:</p>
<pre><code class="language-cpp">ImportUnprocessedState importState = new ImportUnprocessedState();
Fsm importFsm = new Fsm(&amp;importState);
</code></pre>
<p>Ich habe aber diese fehler<br />
C2440 Initialisierung ImportUnprocessedState* kann nicht in ImportUnprocessedState konvertiert werden<br />
und dasselbe für Fsm</p>
<p>Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300343/konstruktor-mit-dem-parameter-vererbte-klassen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 20:11:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300343.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Mar 2012 13:05:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:05:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe 3 Klassen: Fsm, State, ImportUnprocessedState.</p>
<p>ImportUnprocessedState ist eine verebte Klasse von State.<br />
Mein Konstruktor von Fsm sieh so aus:</p>
<p>Fsm(State* state);</p>
<p>Definition:</p>
<pre><code class="language-cpp">Fsm::Fsm(State* state)
{
m_state = state; ////State* m_state;

}
</code></pre>
<p>Ich möchte jetzt ein Object der Fsm Klasse erstellen:</p>
<pre><code class="language-cpp">ImportUnprocessedState importState = new ImportUnprocessedState();
Fsm importFsm = new Fsm(&amp;importState);
</code></pre>
<p>Ich habe aber diese fehler<br />
C2440 Initialisierung ImportUnprocessedState* kann nicht in ImportUnprocessedState konvertiert werden<br />
und dasselbe für Fsm</p>
<p>Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187341</guid><dc:creator><![CDATA[koschka]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:05:50 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:13:03 GMT]]></title><description><![CDATA[<p>importState und importFsm sind halt normale Objekte und keine Zeiger - nur letztere können mit new initialisiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187343</guid><dc:creator><![CDATA[arghonaut]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:13:09 GMT]]></title><description><![CDATA[<p>mit &quot;new&quot; werden Pointer erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187344</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:13:09 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:16:45 GMT]]></title><description><![CDATA[<p>ok wieso kann ich sowas nicht schreiben:</p>
<p>Fsm importFsm(new ImportUnprocessedState());</p>
<p>Ich übergebe einen Pointer auf die Klasse. Ich habe viele Linker errors.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187346</guid><dc:creator><![CDATA[koschka]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:16:45 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:19:51 GMT]]></title><description><![CDATA[<p>koschka schrieb:</p>
<blockquote>
<p>ok wieso kann ich sowas nicht schreiben:</p>
<p>Fsm importFsm(new ImportUnprocessedState());</p>
<p>Ich übergebe einen Pointer auf die Klasse. Ich habe viele Linker errors.</p>
</blockquote>
<p>Fehler treten auf, wenn das Programm als ganzes fehlerhaft ist, und nicht notwendigerweise an der Stelle, die du gerade betrachtest. Manchmal ist auch nicht das, was dasteht, das Problem, sondern das, was fehlt. Das Glaskugellesen überlasse ich anderen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187347</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:25:22 GMT]]></title><description><![CDATA[<p>aber ist das von der Syntax richtig so zu schreiben:</p>
<p>Fsm importFsm( new ImportUnprocessedState());</p>
<p>bei dem Konstruktor Fsm(State * state), wo ImportUnprocessedState : State?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187349</guid><dc:creator><![CDATA[koschka]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:34:43 GMT]]></title><description><![CDATA[<p>das Program ist nur dann fehlerhaft wenn diese Zeile da steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187352</guid><dc:creator><![CDATA[koschka]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:35:54 GMT]]></title><description><![CDATA[<p>Syntax ist gut. Hast du vielleicht vergessen, den Header einzubinden?</p>
<p>und denk bitte daran, den Speicher wieder freizugeben. Evtl. wäre ein shared pointer das Mittel deiner Wahl...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187353</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:41:21 GMT]]></title><description><![CDATA[<p>koschka schrieb:</p>
<blockquote>
<p>aber ist das von der Syntax richtig so zu schreiben:</p>
</blockquote>
<p>Nein, ist es nicht. C++ ist nicht Java.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187354</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:41:21 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:47:48 GMT]]></title><description><![CDATA[<p>Wo ist denn deiner Meinung nach ein Syntax-Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187357</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 13:48:11 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>koschka schrieb:</p>
<blockquote>
<p>aber ist das von der Syntax richtig so zu schreiben:</p>
</blockquote>
<p>Nein, ist es nicht. C++ ist nicht Java.</p>
</blockquote>
<p>von der Syntax ist das korrekt, es wird so kompilieren. Ob es guter Stil ist, steht auf einem ganz anderen Blatt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187358</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 01 Mar 2012 13:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Thu, 01 Mar 2012 14:02:49 GMT]]></title><description><![CDATA[<p>was wäre guter Still? Wie mache ich das richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187367</guid><dc:creator><![CDATA[koschka]]></dc:creator><pubDate>Thu, 01 Mar 2012 14:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Fri, 02 Mar 2012 11:49:56 GMT]]></title><description><![CDATA[<p>Grundsätzlich, verwende sowenig new wie möglich. Automatisierte Speicherverwaltung gibt's auch ohne Garbagecollector (smart pointer und STL) wenn du mal new verwendest achte auf RAII, oder schau wenigstens das du den pointer behälst und danach wieder mit delete freigibst, sonst gibts ein memory leak. Das sollte prinzipiell in in sich abgeschlossenen Einheiten stattfinden, damits übersichtlich bleibt (also new/delete in EINER Funktion, die genau das freigibt was sie angefordert hat, oder in EINEM Objekt, das im D-tor genau das freigibt, was im c-tor angefordert wurde). Letzteres wirst du mit</p>
<pre><code class="language-cpp">Fsm importFsm(new ImportUnprocessedState());
</code></pre>
<p>auf jedenfall verletzen.</p>
<p>Soweit ich im ersten Beitrag lese, verwendest du viel zuviel new:</p>
<pre><code class="language-cpp">ImportUnprocessedState importState = new ImportUnprocessedState();
Fsm importFsm = new Fsm(&amp;importState);
</code></pre>
<p>Der Hinweis das new einen Zeiger zurückgibt, hat dich wohl das machen lassen:</p>
<pre><code class="language-cpp">ImportUnprocessedState* importState = new ImportUnprocessedState();
Fsm* importFsm = new Fsm(&amp;importState);
</code></pre>
<p>Viel besser wäre aber wahrscheinlich das gewesen:</p>
<pre><code class="language-cpp">ImportUnprocessedState importState();
Fsm importFsm(importState);
</code></pre>
<p>Selbst falls du tatsächlich Zeiger brauchst, wäre das wohl immer noch besser (smart pointer verwenden), weil es sich auch um die Speicherverwaltung kümmert:</p>
<pre><code class="language-cpp">unique_ptr&lt;ImportUnprocessedState&gt; importState(new ImportUnprocessedState());
uniquite_ptr&lt;Fsm&gt; importFsm(new Fsm(importState));
</code></pre>
<p>Woher deine Linker-Fehler kommen kann man ohne Glaskugel wohl nicht sagen - hilfreich wäre wohl, wenn du erstmal die Fehler hier reinschreibst, und eventuell relevanten code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187686</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Fri, 02 Mar 2012 11:49:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Fri, 02 Mar 2012 12:21:35 GMT]]></title><description><![CDATA[<p>Sup schrieb:</p>
<blockquote>
<pre><code class="language-cpp">ImportUnprocessedState importState();
</code></pre>
</blockquote>
<p>Das ist eine Funktionsdeklaration. Mach die Klammern weg.</p>
<p>Sup schrieb:</p>
<blockquote>
<pre><code class="language-cpp">uniquite_ptr&lt;Fsm&gt; importFsm(new Fsm(importState));
</code></pre>
</blockquote>
<p>Sollte auch unique_ptr heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187697</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 02 Mar 2012 12:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor mit dem Parameter+Vererbte Klassen on Fri, 02 Mar 2012 14:49:14 GMT]]></title><description><![CDATA[<p>Ja hast recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2187750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2187750</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Fri, 02 Mar 2012 14:49:14 GMT</pubDate></item></channel></rss>