<?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[Komische Fehlermeldung!]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand sagen was mit dieser Fehlermeldung gemeint ist?</p>
<p>error C2758: 'Command::ui_': muss in der Basisklassen/Element-Initialisierungsliste des Konstruktors initialisiert werden.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237606/komische-fehlermeldung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 09:20:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237606.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Mar 2009 09:34:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 09:34:28 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand sagen was mit dieser Fehlermeldung gemeint ist?</p>
<p>error C2758: 'Command::ui_': muss in der Basisklassen/Element-Initialisierungsliste des Konstruktors initialisiert werden.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688640</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 09:34:28 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 09:37:36 GMT]]></title><description><![CDATA[<p>Versuchst du, eine Variable in der Klassendefinition mit einem Wert zu initialisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688642</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 31 Mar 2009 09:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 09:41:00 GMT]]></title><description><![CDATA[<p>Nein eigentlich ich wollte nur mal alles implementieren sonst nichts!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688645</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 09:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 09:44:31 GMT]]></title><description><![CDATA[<p>Neuling_ schrieb:</p>
<blockquote>
<p>Nein eigentlich ich wollte nur mal alles implementieren sonst nichts!</p>
</blockquote>
<p>Versteh ich nicht.</p>
<p>Zeig doch mal den betreffenden Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688649</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 31 Mar 2009 09:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 09:57:33 GMT]]></title><description><![CDATA[<p>main</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &quot;userinterface.h&quot;

using namespace std;

int main()
{ 
  UserInterface *user = new UserInterface; 
return 0;
}
</code></pre>
<p>userinterface.h</p>
<pre><code class="language-cpp">#include &quot;command.h&quot;
#include &quot;addcircle.h&quot;

class UserInterface
{
private:
   Command* commands_;
public:
  UserInterface();
  ~UserInterface();  
};
</code></pre>
<p>userinterface.cpp</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &quot;userinterface.h&quot;
#include &quot;addcircle.h&quot;

using namespace std;

UserInterface::UserInterface()
{
  //commands_ = new AddCircle[5];
}

UserInterface::~UserInterface()
{  
}
</code></pre>
<p>command.h</p>
<pre><code class="language-cpp">#include &lt;string&gt;
//#include &quot;userinterface.h&quot;

class UserInterface;

class Command 
{
private:
  //Command(const Command&amp;);//Copy Constructor
protected:
  UserInterface&amp; ui_;
public:  
   Command();
   Command(UserInterface&amp; ui);
  ~Command();
  virtual bool execute() = 0;
  virtual const char* getName()= 0 ;
};
</code></pre>
<p>command.cpp</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &quot;command.h&quot;

Command::Command()
{
}

Command::Command(UserInterface&amp; ui)
{
}
Command::~Command()
{
}
</code></pre>
<p>addcircle</p>
<pre><code class="language-cpp">#include &quot;userinterface.h&quot;
#include &quot;command.h&quot;

class Command;

class AddCircle : Command
{
private:
  //CommandAddCircle(const CommandAddCircle &amp;);//copy Konstruktor
  //SVGDocument&amp; svg_doc_;
public:  
  AddCircle(){};
  AddCircle(UserInterface&amp; ui);//SVGDocument&amp; svg_doc
  bool execute();
  const char* getName() {return &quot;circle&quot;;};
};
</code></pre>
<p>addcircle.cpp</p>
<pre><code class="language-cpp">#include &quot;command.h&quot;
#include &quot;userinterface.h&quot;
#include &quot;addcircle.h&quot;

#include &lt;string&gt;

AddCircle::AddCircle(UserInterface&amp; ui)
{
  AddCircle::ui_;
}
bool AddCircle::execute()
{
  return 0;
}
</code></pre>
<p>Also hier mal der Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688653</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 09:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:06:46 GMT]]></title><description><![CDATA[<p>Neuling_ schrieb:</p>
<blockquote>
<p>UserInterface&amp; ui_;</p>
</blockquote>
<p>Referenzen müssen initialisiert werden (genauer: in der Iniitalisierungsliste gesetzt), und können zur Laufzeit nicht mehr umgesetzt werden. Falls du von C#/Java kommst: Die dortigen Referenzen entsprechen intern den C++ Zeigern, nicht den C++ Referenzen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688655</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:10:18 GMT]]></title><description><![CDATA[<p>Ja aber ich muss alles per Referenz übergeben! Gibt es nicht eine andere Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688657</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:12:42 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Falls du von C#/Java kommst: Die dortigen Referenzen entsprechen intern den C++ Zeigern, nicht den C++ Referenzen.</p>
</blockquote>
<p>Und falls Du von C kommst: C++ Referenzen entsprechen etwa den #defines des Präprozessors.</p>
<pre><code class="language-cpp">int var_a = 100;
#define ref_a var_a
cout &lt;&lt; ref_a;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1688660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688660</guid><dc:creator><![CDATA[c++Fan 2009]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:20:19 GMT]]></title><description><![CDATA[<p>Neuling_ schrieb:</p>
<blockquote>
<p>Ja aber ich muss alles per Referenz übergeben! Gibt es nicht eine andere Lösung?</p>
</blockquote>
<p>1. Warum <strong>musst</strong> du alles als Referenz übergeben?<br />
2. Auch bei einer Referenzübergabe kannst du intern dennoch einen Zeiger halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688664</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:21:04 GMT]]></title><description><![CDATA[<p>Ja ich komme von C aber wo soll ich das iniitalisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688665</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:21:04 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 10:29:38 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Neuling_ schrieb:</p>
<blockquote>
<p>Ja aber ich muss alles per Referenz übergeben! Gibt es nicht eine andere Lösung?</p>
</blockquote>
<p>1. Warum <strong>musst</strong> du alles als Referenz übergeben?</p>
<p>2. Auch bei einer Referenzübergabe kannst du intern dennoch einen Zeiger halten.</p>
</blockquote>
<p>1.Weil das vorgegeben ist!<br />
2.Intern schon aber damit geht meine Fehlermeldung nicht weg!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688670</guid><dc:creator><![CDATA[Neuling_]]></dc:creator><pubDate>Tue, 31 Mar 2009 10:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 11:08:36 GMT]]></title><description><![CDATA[<p>Neuling_ schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Neuling_ schrieb:</p>
<blockquote>
<p>Ja aber ich muss alles per Referenz übergeben! Gibt es nicht eine andere Lösung?</p>
</blockquote>
<p>1. Warum <strong>musst</strong> du alles als Referenz übergeben?</p>
<p>2. Auch bei einer Referenzübergabe kannst du intern dennoch einen Zeiger halten.</p>
</blockquote>
<p>1.Weil das vorgegeben ist!<br />
2.Intern schon aber damit geht meine Fehlermeldung nicht weg!</p>
</blockquote>
<p>kauf dir nen c++ buch -.-<br />
wieso ist es vorgegeben? was genau ist vorgegeben (genauer wortlt der aufgabenstellung/...)?</p>
<p>zu 2. dann machst du was falsch - was genaueres gibts, wenn du genauer wirst...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688696</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 31 Mar 2009 11:08:36 GMT</pubDate></item><item><title><![CDATA[Reply to Komische Fehlermeldung! on Tue, 31 Mar 2009 12:08:05 GMT]]></title><description><![CDATA[<p>Neuling_ schrieb:</p>
<blockquote>
<p>2.Intern schon aber damit geht meine Fehlermeldung nicht weg!</p>
</blockquote>
<p>Wie wäre es wenn du dir erst einmal überlegst, wie du Fragen stellen musst, damit du sinnvolle Antworten erwarten kannst. Denk bitte daran, das wir weder deinen Sourcecode noch irgendwelche sinnvollen Fehlermeldungen vorliegen haben. Die Fehler des Compilers ergeben in der Regel Sinn.</p>
<p>Stell deine Variable _ui auf einen Zeiger um und weise ihr die Adresse der Übergebenen Referenz zu. Ganz davon abgesehen das du (sofern du nicht durch - uns unbekannten - Vorgaben eingeschränkt bist) mit der C++ Standardbibliothek, Boost und dem TR1 schon einige Probleme von dir lösen könntest.</p>
<p>1. Zu jedem new gehört auch genau ein delete.<br />
=&gt; Sinnvolle Alternativen sind Smartpointer, wie z.B. boost::scoped_ptr, boost::shared_ptr/std::tr1::shared_ptr.</p>
<p>2. Ohne deine aktuelle Fehlermeldung und dem aktuellen Codeausschnitt wirst du von uns keine Hilfe erwarten können. Kurz gesagt: Du machst etwas falsch. Und sei es das dein Design (wie ich annehme) nicht sinnvoll gewählt ist.</p>
<p>Ich frage mich z.B. ob dein Command ohne UI-Objekt überhaupt Sinn macht. Wenn nein, kommst du ausschließlich mit Referenzen in deiner Commandklasse aus, sofern du die Initialisierungsliste verwendest UND ohne Standardkonstruktor/Zuweisungsoperator auskommst.</p>
<p>Eine Initialisierungsliste ist <strong>immer</strong> nötig, wenn...<br />
a) du Referenzen initialisieren willst.<br />
b) du Konstanten initialisieren willst.<br />
c) du einen anderen als den Standardkonstruktor der Basisklasse verwenden willst.</p>
<pre><code class="language-cpp">class Base
{
    public:
        Base(int foo)
        : foo(foo) // Initialisierungsliste
        {}

        virtual ~Base()
        {}

    private:
        int foo;
};

class Inherited : public Base
{
    public:
        Inherited(int foo, int foo2)
        : Base(foo), // Den Konstruktor Base(int) verwenden,
          foo2(foo2) // und weiteren Member initialisieren...
        {}

        virtual ~Base()
        {}

    private:
        int foo2;
}
</code></pre>
<p>3. Basisklassen sollten entweder einen virtuellen Destruktor oder nur private Konstruktoren besitzen.<br />
=&gt; Des weiteren könnte auch hier Boost/TR1 einen Teil des Entwurfes ersetzen (boost::function/std::tr1::function, boost::bind/std::tr1::bind).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1688765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1688765</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 31 Mar 2009 12:08:05 GMT</pubDate></item></channel></rss>