<?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[anfängerfrage vererbung]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>mal eine frage, wenn ich folgende klassen defintion habe:</p>
<pre><code class="language-cpp">class ByteArray : public std::vector&lt;byte&gt; {
}
</code></pre>
<p>Warum komme ich dann nicht mehr an diesen Konstruktor ran:</p>
<pre><code class="language-cpp">template &lt;class InputIterator&gt;
         vector ( InputIterator first, InputIterator last, const Allocator&amp; = Allocator() );
</code></pre>
<p>Also ich wollte dies machen:</p>
<pre><code class="language-cpp">int[] array = {1,2,3,4};
ByteArray data(&amp;array[0], buffer+4);
</code></pre>
<p>Wenn ich die Klassendefintion durch ein typedef ersetzt geht es, logischer weise.</p>
<p>gruß<br />
sven</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309292/anfängerfrage-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 06:36:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309292.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Oct 2012 07:26:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 07:26:50 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>mal eine frage, wenn ich folgende klassen defintion habe:</p>
<pre><code class="language-cpp">class ByteArray : public std::vector&lt;byte&gt; {
}
</code></pre>
<p>Warum komme ich dann nicht mehr an diesen Konstruktor ran:</p>
<pre><code class="language-cpp">template &lt;class InputIterator&gt;
         vector ( InputIterator first, InputIterator last, const Allocator&amp; = Allocator() );
</code></pre>
<p>Also ich wollte dies machen:</p>
<pre><code class="language-cpp">int[] array = {1,2,3,4};
ByteArray data(&amp;array[0], buffer+4);
</code></pre>
<p>Wenn ich die Klassendefintion durch ein typedef ersetzt geht es, logischer weise.</p>
<p>gruß<br />
sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261893</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Fri, 19 Oct 2012 07:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 07:31:34 GMT]]></title><description><![CDATA[<p>Konstruktoren werden nicht vererbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261895</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 19 Oct 2012 07:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 07:38:47 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>Wenn ich die Klassendefintion durch ein typedef ersetzt geht es, logischer weise.</p>
</blockquote>
<p>Ist auch besser. Nutze Vererbung nur wenn du musst. C++ ist nicht JavaLand, wo alles von jedem erben kann/muss/sollte. std::vector ist z.B. nicht darauf ausgelegt, dass man von ihm erbt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261899</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 19 Oct 2012 07:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 07:53:04 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>das konstruktoren nicht vererbt werden, war mir neu. ok, ok. gut zu wissen. ich persönlich liebe die nutzung der vererbung, da man so semantisch wertvollere konstrukte bauen kann, welche typsicher und erweiterbar sind. ich habe eine eigene template klasse List&lt;T&gt;, welche basisoperationen anbietet und die ich über vererbung selektiv erweitern kann. das ist eigentlich ne super sache. aber ok, konstruktoren werden nicht vererbt. merk ich mir.</p>
<p>was hat vektor gegen seine beerbung?</p>
<p>vielen dank!<br />
sven_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261903</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Fri, 19 Oct 2012 07:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 08:49:01 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>was hat vektor gegen seine beerbung?</p>
</blockquote>
<p>Einen fehlenden virtuellen Destruktor, so dass man ihn nicht gut polymorph benutzen kann. Wenns nur um Hinzufügen von Methoden eght benutzt man normalerweise freie Funktionen in C++, und wenn man die Klassen nicht polymorph nutzen möchte schaut man normalerweise, dass man Komposition der Vererbung vorzieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261928</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 19 Oct 2012 08:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 09:33:37 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>ich persönlich liebe die nutzung der vererbung, da man so semantisch wertvollere konstrukte bauen kann,</p>
</blockquote>
<p>Aha?</p>
<p>sven_ schrieb:</p>
<blockquote>
<p>welche typsicher</p>
</blockquote>
<p>Typsicherheit ist da, um nicht versehentlich einen Typ mit Eigenschaft X in einen Typ ohne Eigenschaft X umzuwandeln. Beim typedef haben die Typen aber die gleichen Eigenschaften, und sind somit immer sicher.</p>
<p>sven_ schrieb:</p>
<blockquote>
<p>und erweiterbar sind.</p>
</blockquote>
<p>Da nimmt man freie Funktionen. <a href="http://www.gotw.ca/gotw/084.htm" rel="nofollow">Warum das in vielen Fällen eh der zu bevorzugende Weg ist.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2261959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2261959</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 19 Oct 2012 09:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 12:58:51 GMT]]></title><description><![CDATA[<p>hallo nochmals,</p>
<p>vielen dank für die hinweise. da hab ich doch mal wieder etwas zu lesen. fein. das mit den semantisch wertvolleren konstrukten sein nochmals erklärt.</p>
<p>Ich entwickle für verschiedene Systeme und Plattformen, inkl. Simulatoren. Da ist es echt nervig, dass bestimmte Dinge unterschiedlich abgebildet werden (z.B. Repräsentation einer Zeit, einer Adresse, etc.). Nun kann es sein, dass auf einem System die Defintionen so ausehen:</p>
<p>[cpp<br />
typedef long LONG;<br />
typedef int INT;</p>
<p>typedef std::vector&lt;INT&gt; A;<br />
typedef std::vector&lt;LONG&gt; B;<br />
[/cpp]<br />
wenn ich dann Dummerweise folgendes tue:</p>
<pre><code class="language-cpp">A a;
B b = b;
</code></pre>
<p>bekomme ich keine Fehlermeldung. Bei &quot;echten&quot; Klassen schon. Dies meine ich mit semantische reicher. Der Fehler kann echt vertrackt sein, da sucht man sich unter umständen echt einen ab.</p>
<p>gruß und dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262074</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Fri, 19 Oct 2012 12:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Fri, 19 Oct 2012 14:56:44 GMT]]></title><description><![CDATA[<p>Der Ausdruck ist ja auch legal, dennoch:</p>
<pre><code>warning: variable 'b' is uninitialized when used within its own initialization [-Wuninitialized]
        B b = b;
          ~   ^
</code></pre>
<p>Die Meldung kommt auch, wenn man die Typedefs weglässt.</p>
<p>Und warum sollte man solche Konstrukte erstellen?</p>
<pre><code class="language-cpp">typedef long LONG
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2262095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262095</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Fri, 19 Oct 2012 14:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Mon, 22 Oct 2012 07:26:54 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ja das ist ein Fehler, das sollte natürlich B b = a; heißen. Die Bezeichnungen sind ja wie oben gesagt nur symbolisch. Wenn ich auf Linux bin, dann ist die Zeit ein time_t, im Simulator sim_time, welche eigentlich nur ein double ist. Wenn ich dann noch eine weiteren typedef habe, kann es zu falschen zuweiseungen kommen.</p>
<p>sven</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262678</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Mon, 22 Oct 2012 07:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Mon, 22 Oct 2012 07:39:07 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>hallo,</p>
<p>ja das ist ein Fehler, das sollte natürlich B b = a; heißen. Die Bezeichnungen sind ja wie oben gesagt nur symbolisch. Wenn ich auf Linux bin, dann ist die Zeit ein time_t, im Simulator sim_time, welche eigentlich nur ein double ist. Wenn ich dann noch eine weiteren typedef habe, kann es zu falschen zuweiseungen kommen.</p>
<p>sven</p>
</blockquote>
<p>Such mal nach &quot;Boost strong typedef&quot;, das könnte in die Richtung gehen, die du brauchst <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2262686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262686</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 22 Oct 2012 07:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to anfängerfrage vererbung on Mon, 22 Oct 2012 10:01:01 GMT]]></title><description><![CDATA[<p>Ah! Wieder was gelernt. Vielen Dank. Das ist in der Tat nicht schlecht. Nur noch eine Frage für BestPractice. Wo schiebt ihr solche StrongTypedefs hin? Eigene Header? Ne Sammelheader? In die Klasse, wo ich es beim Programmieren das erste mal brauche?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262780</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Mon, 22 Oct 2012 10:01:01 GMT</pubDate></item></channel></rss>