<?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[Vererbung]]></title><description><![CDATA[<p>Guten,</p>
<p>habe mal wieder ein Problem - ich glaube (hoffe) dass die Lösung auf der Hand liegt aber ich komme nicht drauf <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="😞"
    /></p>
<p>Problem: Ich habe zwei Klassen (foo &amp; bar). Diese haben (fast) identische - statische und nicht statische - Funktionen; viele benöten Konstanten und gerade diese sind für foo und bar unterschiedlich.<br />
Also zB.:</p>
<pre><code class="language-cpp">class foo
{
public:
  static void func1(int blah);
  void func1();
}
void foo::func1(int blah)
{
  // mache etwas mit MY_CONST = 5
}
void foo::func1()
{
  // mache etwas mit MY_CONST = 5
}

class bar
{
public:
  static void func1(int blah);
  void func1();
}
void bar::func1(int blah)
{
  // mache etwas mit MY_CONST = 9
}
void bar::func1()
{
  // mache etwas mit MY_CONST = 9
}
</code></pre>
<p>Das Problem ist jetzt dass ich gerne die Funktionen von foo an bar vererben möchte (was ja auch Sinn macht). Aber die Funktionen sollen dann andere Werte nutzen. Nun kann ich diese Werte leider nicht einfach als nicht-statische member festhalten (und dann mit Konstruktor beschreiben) da die statischen Funktionen da ja nicht drauf zugreifen können. Als statische member kann ich das ganze auch nicht festhalten weil die vererbten Funktionen ja auf die member von foo und nicht auf die von bar zugreifen. Wie mache ich das also am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281652/vererbung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 14:58:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281652.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Feb 2011 13:45:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 13:45:56 GMT]]></title><description><![CDATA[<p>Guten,</p>
<p>habe mal wieder ein Problem - ich glaube (hoffe) dass die Lösung auf der Hand liegt aber ich komme nicht drauf <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="😞"
    /></p>
<p>Problem: Ich habe zwei Klassen (foo &amp; bar). Diese haben (fast) identische - statische und nicht statische - Funktionen; viele benöten Konstanten und gerade diese sind für foo und bar unterschiedlich.<br />
Also zB.:</p>
<pre><code class="language-cpp">class foo
{
public:
  static void func1(int blah);
  void func1();
}
void foo::func1(int blah)
{
  // mache etwas mit MY_CONST = 5
}
void foo::func1()
{
  // mache etwas mit MY_CONST = 5
}

class bar
{
public:
  static void func1(int blah);
  void func1();
}
void bar::func1(int blah)
{
  // mache etwas mit MY_CONST = 9
}
void bar::func1()
{
  // mache etwas mit MY_CONST = 9
}
</code></pre>
<p>Das Problem ist jetzt dass ich gerne die Funktionen von foo an bar vererben möchte (was ja auch Sinn macht). Aber die Funktionen sollen dann andere Werte nutzen. Nun kann ich diese Werte leider nicht einfach als nicht-statische member festhalten (und dann mit Konstruktor beschreiben) da die statischen Funktionen da ja nicht drauf zugreifen können. Als statische member kann ich das ganze auch nicht festhalten weil die vererbten Funktionen ja auf die member von foo und nicht auf die von bar zugreifen. Wie mache ich das also am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017002</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 13:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 15:37:31 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Problem: Ich habe zwei Klassen (foo &amp; bar). Diese haben (fast) identische - statische und nicht statische - Funktionen; viele benöten Konstanten und gerade diese sind für foo und bar unterschiedlich.</p>
</blockquote>
<p>Eventuell eine Basisklasse, von denen <code>foo</code> und <code>bar</code> erben? Dann könntest du die Konstante dem Konstruktor der Basisklasse übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017041</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 05 Feb 2011 15:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 15:48:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Problem: Ich habe zwei Klassen (foo &amp; bar). Diese haben (fast) identische - statische und nicht statische - Funktionen; viele benöten Konstanten und gerade diese sind für foo und bar unterschiedlich.</p>
</blockquote>
<p>Eventuell eine Basisklasse, von denen <code>foo</code> und <code>bar</code> erben? Dann könntest du die Konstante dem Konstruktor der Basisklasse übergeben.</p>
</blockquote>
<p>Hm.. also das müsste eigentlich funktionieren.<br />
Manchmal sieht man halt den Wald vor lauter Bäumen nicht <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="😃"
    /> Besten Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017051</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 15:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 16:52:20 GMT]]></title><description><![CDATA[<p>Ehm.. ne das geht wohl doch nicht -.-<br />
Die statischen Methoden der Basisklasse können ja trotzdem nicht auf nicht-statische Variablen zugreifen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017087</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 16:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:07:01 GMT]]></title><description><![CDATA[<p>Ich verstehe nicht, wieso du statische Methoden hast, die auf nicht-statische Attribute zugreifen wollen. Was spricht gegen nicht-statische Methoden? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2017092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017092</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:06:14 GMT]]></title><description><![CDATA[<p>Prinzipiell nichts - wenn ich keine &quot;vernünftige&quot; Lösung finde werden die wohl rausgeschmissen. Allerdings muss man dann zwangsläufig eine Instanz der Klasse erstellen um eine Methode dieser zu nutzen - was an manchen Stellen nicht umbedingt zweckmäßig wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017095</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:06:47 GMT]]></title><description><![CDATA[<p>Was sind das denn für Methoden? Erklär doch Mal Deinen Kontext.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017096</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:14:55 GMT]]></title><description><![CDATA[<p>wieso überhaupt klassen?</p>
<pre><code class="language-cpp">int Func(int konstanze)
{
	return 1+2+3+konstanze;
}

int Foo()
{
	const int MY_CONST = 5;
	return Func(MY_CONST);
}

int Bar()
{
	const int MY_CONST = 9;
	return Func(MY_CONST);
}
</code></pre>
<p>wenn man unbedingt will von mir aus auch mit statischen methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017101</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:18:39 GMT]]></title><description><![CDATA[<p>Mir ist noch was eingefallen, aber irgendwie macht das alles vermutlich komplizierter als nötig:</p>
<pre><code class="language-cpp">enum ConstSetType
{
	SET1,
	SET2
};

template&lt;ConstSetType set&gt;
struct ConstSet
{
	static const int c1;
	static const int c2;
};

template&lt;&gt;
struct ConstSet&lt;SET1&gt;
{
	static const int c1 = 5;
	static const int c2 = 10;
};

template&lt;&gt;
struct ConstSet&lt;SET2&gt;
{
	static const int c1 = 8;
	static const int c2 = 13;
};

template&lt;ConstSetType setType = SET1&gt;
class foo
{
protected:
	static ConstSet&lt;setType&gt; constants_;

public:
	virtual void c1() const {std::cout &lt;&lt; constants_.c1;}
	virtual void c2() const {std::cout &lt;&lt; constants_.c2;}
};

class bar : public foo&lt;SET2&gt;
{

};

// Test
int main()
{
	foo&lt;&gt; x;
	bar y;
	x.c1();
	x.c2();
	y.c1();
	y.c2();
return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2017103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017103</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:18:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:20:14 GMT]]></title><description><![CDATA[<p>Vielleicht sollten wir auf die genaue Problemstellung warten, bevor wir immer komplexere Ideen haben <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2017104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017104</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:20:54 GMT]]></title><description><![CDATA[<p>Gut, nur als Kontext des Kontextes - quasi als Metakontext sollte man wissen dass ich mir der nicht zwangsläufigen Sinnhaftigkeit der ganzen Aktion bewusst bin. Ich mache das nur weil ich mich etwas an C++ gewöhnen möchte und mir nichts wirklich besseres eingefallen ist ;).</p>
<p>Also ich habe zB. eine Klasse die Funktionen für eine Listbox schachteln. (clear, addstring usw.)<br />
Diese Funktionen gibts jetzt einmal statisch (hier muss man ein window handle übergeben) und einmal nicht statisch (hier wird das window handle der Instanz genutzt).<br />
Wenn Du mir jetzt sagst dass ganze ist eh unsinnig es gibt doch die MFC dann hau ich Dich <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>
<p>Edit: Wow - viele Beitrage in 5 Minuten oO^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017105</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:20:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:20:36 GMT]]></title><description><![CDATA[<p>Dann ruft die nichtstatische Methode die statische mit seinem Handle auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017106</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:20:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:21:47 GMT]]></title><description><![CDATA[<p>Die nicht statische Methode hat kein Handle als Parameter, das ist ja der Sinn <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/2017107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017107</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:24:06 GMT]]></title><description><![CDATA[<p>Nexus:<br />
Laufzeitpolymorphie allein klappt halt nicht für statische Methoden und die virtual-Methoden sind nur ein Beispiel. Die können in dem eigentlich auch nicht-virtual sein, ändert ja nichts. Und ja, ich find das auch overengineered, aber mir fällt sonst auch nichts ein, wenn man sein kaum benanntes Design so behalten möchte... <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>
<p>cooky:<br />
Und wieso soll man überhaupt die Möglichkeit haben über ein Window-Handle, was meinem Verständnis auf einer anderen Abstraktionsebene steht, etwas zu erreichen? Wenn du so eine Schicht aufbaust, würde ich dem Anwender auch gar nicht die Möglichkeit geben, dass er die &quot;normalen&quot; Handles benutzen kann, wo ist denn da der Sinn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017108</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:23:46 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Die nicht statische Methode hat kein Handle als Parameter, das ist ja der Sinn <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>
</blockquote>
<pre><code class="language-cpp">class ListBox
{
public:
  static void Clear(Handle liste)
  { /* ..Implementierung.. */ }

  void Clear()
  {
    Clear(handle_);
  }
private:
  Handle handle_;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2017110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017110</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:27:05 GMT]]></title><description><![CDATA[<p>Hm.. mir fällt gerade auf dass ich in der statischen Methode einfach eine Temporäre Instanz erstellen und dann die nicht statische Methode aufrufen könnte oO..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017113</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:29:52 GMT]]></title><description><![CDATA[<p>Welchen Sinn hat das Handle dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017116</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:33:06 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Hm.. mir fällt gerade auf dass ich in der statischen Methode einfach eine Temporäre Instanz erstellen und dann die nicht statische Methode aufrufen könnte oO..</p>
</blockquote>
<p>Was ist denn daran besses als andersrum (so wie eben gezeigt)??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017117</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 17:38:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22559">@Eisflamme</a><br />
Dass man bei öfter genutzten Fenstern auch eine Instanz der Klasse erstellen kann und das Handle nur einmal setzen muss.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9203">@brotbernd</a><br />
Dass man die Konstanten nicht als Parameter übergeben muss.<br />
(Das was Du gezeigt hattest war quasi die Ausgangssituation)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017118</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 05 Feb 2011 17:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Sat, 05 Feb 2011 18:04:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Dass man bei öfter genutzten Fenstern auch eine Instanz der Klasse erstellen kann und das Handle nur einmal setzen muss.</p>
</blockquote>
<p>Ja, aber wenn das Handle offensichtlich unwichtig ist, weil die Funktion auch mit einem temporär erzeugten Handle durchgeführt werden kann, was soll das Ganze dann? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2017121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017121</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Sat, 05 Feb 2011 18:04:59 GMT</pubDate></item></channel></rss>