<?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[[Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute )]]></title><description><![CDATA[<p>Hi,</p>
<p>hab eine kleine Vererbungshierachie, auf deren untersten Ebene eine abstrakte Klasse steht, die eine Schnittstelle bietet, um aus Objekten XML-Elemente zu machen.</p>
<pre><code class="language-cpp">class XMLElement {

	public:
		XMLElement(const std::string&amp; elementName) :
		  _elemName(elementName) {};

		virtual	bool	readDistribution() = 0;
		virtual bool	writeDistribution() = 0;

	private:
		std::string		_elemName;

	};
</code></pre>
<p>Mein Probelm ist, dass ich den Konstrukter nicht von einer indirekt abgeleiteten Klasse aufrufen kann, da dann Compilerfehler-&gt;Keine Basisklasse?</p>
<pre><code class="language-cpp">class List : public XMLElement
	{
		// ..
	}

	class MyList : public List
	{
	public:
		MyList()
			: XMLElement(&quot;mylist&quot;)	// &lt;-- Fehler !!!
		{
		};
		// ..
	}
</code></pre>
<p>Kann ich den gewünschten Konstruktor irgendwie erreichen?</p>
<p>Danke,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126459/polymorphie-ctor-einer-indirekten-basisklasse-aufrufen-stat-attribute</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 17:49:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126459.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Nov 2005 10:03:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:45:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hab eine kleine Vererbungshierachie, auf deren untersten Ebene eine abstrakte Klasse steht, die eine Schnittstelle bietet, um aus Objekten XML-Elemente zu machen.</p>
<pre><code class="language-cpp">class XMLElement {

	public:
		XMLElement(const std::string&amp; elementName) :
		  _elemName(elementName) {};

		virtual	bool	readDistribution() = 0;
		virtual bool	writeDistribution() = 0;

	private:
		std::string		_elemName;

	};
</code></pre>
<p>Mein Probelm ist, dass ich den Konstrukter nicht von einer indirekt abgeleiteten Klasse aufrufen kann, da dann Compilerfehler-&gt;Keine Basisklasse?</p>
<pre><code class="language-cpp">class List : public XMLElement
	{
		// ..
	}

	class MyList : public List
	{
	public:
		MyList()
			: XMLElement(&quot;mylist&quot;)	// &lt;-- Fehler !!!
		{
		};
		// ..
	}
</code></pre>
<p>Kann ich den gewünschten Konstruktor irgendwie erreichen?</p>
<p>Danke,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918283</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:08:53 GMT]]></title><description><![CDATA[<p>Du kannst in der Zwischenklasse einen Konstruktor einbauen, der das übernimmt:</p>
<pre><code class="language-cpp">List::List(const string&amp; name=&quot;list&quot;) : XMLElement(name) {...}
MyList::MyList() : List(&quot;mylist&quot;) {...}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/918291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918291</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:14:30 GMT]]></title><description><![CDATA[<p>2 Möglichkeiten die ich sehe</p>
<p>1. Möglichkeit</p>
<pre><code class="language-cpp">class List : public XMLElement
    {

        List(string&amp; elemName) : XMLElement(elemName) {} //1.Möglichkeit
    }

    class MyList : public List
    {
    public:
        MyList()
            : List(&quot;mylist&quot;)    // 1. Möglichkeit 
        {
        };
        // ..
    }
</code></pre>
<p>2. Möglichkeit eine protected Methode setName(string&amp; name) in XMLElement. Diese Methode rufst dann im Kontruktor von MyList auf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918300</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:14:30 GMT</pubDate></item><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:22:46 GMT]]></title><description><![CDATA[<p>Danke! <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="👍"
    /><br />
Zu einfach, um selbst drauf zu kommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> .</p>
<p>Da hab ich gleich noch eine Frage dazu. Den Element-Namen möchte ich in einer statischen Funtkion zurückgeben. Dieser Name soll für jedes Objekt der selben Klassse gleich sein. Wenn ich _elemName in XMLElement statisch mach, gilt das dann doch auch für alle abgeleiteten Klassen der gleiche Name. Jede abgeleitete Klasse soll aber einen eigenen statischen Element-Namen haben. Und ich möchte gern mit der Klasse XMLElement vorgeben, dass sie abgeleiteten Klassen ihren eigenen Elementnamen statisch zur Verfügung stellen.<br />
Alle Klarheiten beseitigt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also kann ich ein Klassenattribut festlegen, was für jede abgeleitete Klasse einen anderen Wert hat?</p>
<p>Danke,<br />
don_basto.</p>
<p>@templäd: Mit der 2. Variante mache ich es auch bisher, gefallt mir aber nicht wirklich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918311</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:42:19 GMT]]></title><description><![CDATA[<p>Nein, statische Funktionen können nicht virtuell sein, also lässt sich das nicht mit der Polymorphie kombinieren. Und ein statisches Element existiert afaik einmal für die Klasse und alle abgeleiteten Klassen. Du könntest höchstens den Namen &quot;ganz oben&quot; als const deklarieren (und alle Konstruktoren, die explizit einen Namen vorgeben, protected setzen), dann kannst du kontrollieren, daß jede Klasse den selben Namen zurückgibt.</p>
<p>*etwas nachgedacht hat*</p>
<p>Alternativ geht auch so etwas:</p>
<pre><code class="language-cpp">class XMLElement
{
public:
  virtual const string&amp; Name() {return &quot;generic Element&quot;;}
};

class List : public XMLELement
{
public:
  virtual const string&amp; Name() {return &quot;List&quot;;}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/918333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918333</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to [Polymorphie] Ctor einer indirekten Basisklasse aufrufen ( + stat. Attribute ) on Tue, 15 Nov 2005 10:51:22 GMT]]></title><description><![CDATA[<p>Ich hatte ursprünglich die Idee, an den Elementname ohne konkretes Objekt zu kommen. In meinem Programm erzeuge teilweise nur zu dem Zweck ein Objekt, um den Elementnamen herauszufinden. Dafür sollten statische Methoden und Attribute ja besser geeignet sein. Und da dieser Elementname von XMLElement ins Spiel gebracht wird, dachte ich, ich könnte es eben mit Vererbung machen. Vielleicht fällt mir was dazu ein .. .</p>
<p>Bis dann,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918339</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Tue, 15 Nov 2005 10:51:22 GMT</pubDate></item></channel></rss>