<?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[vererbte TemplateKlasse mit string element]]></title><description><![CDATA[<p>Hallo, ich muß zwecks Prüfungsvorbereitung ein Programm umändern.<br />
Das Grundprogramm ist relativ einfach. über eine abgeleitete template Klasse fülle ich ein Array und gebe es zum einen aus ohne Bereichs Check und mit einer anderen<br />
Methode mache ich einen Bereichs Check.<br />
Nun will ich aber diesen Vergleich mit einem String erweitern, da setzt es total aus bei mir...</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;exception&gt;<br />
#include &lt;string&gt;<br />
using namespace std;</p>
<p>template &lt;class T, const unsigned int size, const string &gt; class Array<br />
{<br />
protected:<br />
T arr[size];<br />
string name;<br />
public:<br />
// T &amp;operator[](unsigned int index) { return arr[index]; }</p>
<p>T &amp;at(unsigned int index, string m)<br />
{<br />
name =m;<br />
try<br />
{</p>
<p>if (index &lt; size &amp;&amp; m==&quot;karl&quot;)</p>
<p>return arr[size];</p>
<p>else<br />
throw std::domain_error(&quot;invalid index&quot;);<br />
}<br />
catch (exception &amp;exc)<br />
{<br />
cout &lt;&lt; exc.what() &lt;&lt;endl;<br />
}<br />
}<br />
};</p>
<p>////////////////////////////////////////////////////////////////////////<br />
// ABGELEITETE TEMPLATEKLASSE</p>
<p>template &lt;class T, const unsigned int size ,const string &gt; class ArrayPlus : public Array&lt;T, size, string&gt;<br />
{<br />
private:<br />
public:<br />
ArrayPlus(const T &amp;initval, string m) //Array füllen<br />
{<br />
for (int i = 0; i &lt; size; i++)</p>
<p>arr[i] = (initval +&quot;name&quot;);<br />
}</p>
<p>};<br />
int main(void)<br />
{<br />
ArrayPlus&lt;char, 3, string&gt; ap(15.1,&quot;Hans&quot;); //double-&gt; zahlenform;3-&gt;für arraysize + initialisierung 1.1</p>
<p>ap[1] = 2.2,&quot;hans&quot;;</p>
<p>cout &lt;&lt; ap[0] &lt;&lt; endl;<br />
cout &lt;&lt; ap[1] &lt;&lt; endl;<br />
cout &lt;&lt; ap[2] &lt;&lt; endl;<br />
cout &lt;&lt; <a href="http://ap.at" rel="nofollow">ap.at</a>(2) &lt;&lt; endl;</p>
<p>cout &lt;&lt; ap[3] &lt;&lt; endl; // Zufallswert, kein range-check!</p>
<p>cout &lt;&lt; <a href="http://ap.at" rel="nofollow">ap.at</a>(3) &lt;&lt; endl; // Abbruch mit out_of_range Exception!</p>
<p>Also so funktioniert es mal gar nicht... ich habe leider wenig übung mit der Klasse String und weis nicht mehr weiter.<br />
kann man das in dieser Form Überhaupt machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
wäre super nett wenn mir mal jemand ein Paar tipps geben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171399/vererbte-templateklasse-mit-string-element</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 09:55:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171399.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Jan 2007 08:15:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:15:43 GMT]]></title><description><![CDATA[<p>Hallo, ich muß zwecks Prüfungsvorbereitung ein Programm umändern.<br />
Das Grundprogramm ist relativ einfach. über eine abgeleitete template Klasse fülle ich ein Array und gebe es zum einen aus ohne Bereichs Check und mit einer anderen<br />
Methode mache ich einen Bereichs Check.<br />
Nun will ich aber diesen Vergleich mit einem String erweitern, da setzt es total aus bei mir...</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;exception&gt;<br />
#include &lt;string&gt;<br />
using namespace std;</p>
<p>template &lt;class T, const unsigned int size, const string &gt; class Array<br />
{<br />
protected:<br />
T arr[size];<br />
string name;<br />
public:<br />
// T &amp;operator[](unsigned int index) { return arr[index]; }</p>
<p>T &amp;at(unsigned int index, string m)<br />
{<br />
name =m;<br />
try<br />
{</p>
<p>if (index &lt; size &amp;&amp; m==&quot;karl&quot;)</p>
<p>return arr[size];</p>
<p>else<br />
throw std::domain_error(&quot;invalid index&quot;);<br />
}<br />
catch (exception &amp;exc)<br />
{<br />
cout &lt;&lt; exc.what() &lt;&lt;endl;<br />
}<br />
}<br />
};</p>
<p>////////////////////////////////////////////////////////////////////////<br />
// ABGELEITETE TEMPLATEKLASSE</p>
<p>template &lt;class T, const unsigned int size ,const string &gt; class ArrayPlus : public Array&lt;T, size, string&gt;<br />
{<br />
private:<br />
public:<br />
ArrayPlus(const T &amp;initval, string m) //Array füllen<br />
{<br />
for (int i = 0; i &lt; size; i++)</p>
<p>arr[i] = (initval +&quot;name&quot;);<br />
}</p>
<p>};<br />
int main(void)<br />
{<br />
ArrayPlus&lt;char, 3, string&gt; ap(15.1,&quot;Hans&quot;); //double-&gt; zahlenform;3-&gt;für arraysize + initialisierung 1.1</p>
<p>ap[1] = 2.2,&quot;hans&quot;;</p>
<p>cout &lt;&lt; ap[0] &lt;&lt; endl;<br />
cout &lt;&lt; ap[1] &lt;&lt; endl;<br />
cout &lt;&lt; ap[2] &lt;&lt; endl;<br />
cout &lt;&lt; <a href="http://ap.at" rel="nofollow">ap.at</a>(2) &lt;&lt; endl;</p>
<p>cout &lt;&lt; ap[3] &lt;&lt; endl; // Zufallswert, kein range-check!</p>
<p>cout &lt;&lt; <a href="http://ap.at" rel="nofollow">ap.at</a>(3) &lt;&lt; endl; // Abbruch mit out_of_range Exception!</p>
<p>Also so funktioniert es mal gar nicht... ich habe leider wenig übung mit der Klasse String und weis nicht mehr weiter.<br />
kann man das in dieser Form Überhaupt machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
wäre super nett wenn mir mal jemand ein Paar tipps geben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216600</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:25:09 GMT]]></title><description><![CDATA[<p>Schon 22 Beiträge und noch keine Code-Tags bemerkt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216604</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:25:09 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:26:34 GMT]]></title><description><![CDATA[<p>oh.. eigentlich nicht. aber jetzt weiß ich es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216608</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:29:39 GMT]]></title><description><![CDATA[<p>Erstens: die Angabe 'const string' als Template-Parameter sieht irgendwie illegal aus - bist du sicher, daß das funktioniert?</p>
<p>Zweitens: In der Anweisung <code>ap[1]=2.2,&quot;Hans&quot;;</code> hat der Teil hinter dem Komma keinerlei Auswirkung.</p>
<p>Drittens: Du kannst keine double und Strings miteinander addieren.</p>
<p>-&gt; Das Programm sieht zwar aus wie C++, aber ich bezweifle, daß es so überhaupt compiliert werden kann.</p>
<p>PS: Und viertens: sfds</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216610</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:32:08 GMT]]></title><description><![CDATA[<p>mark79 schrieb:</p>
<blockquote>
<p>oh.. eigentlich nicht. aber jetzt weiß ich es.</p>
</blockquote>
<p>Dann füge sie doch bitte in deinen Beitrag ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216611</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:36:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;exception&gt;
#include &lt;string&gt;
using namespace std;

template &lt;class T, const unsigned int size, const string &gt; class Array
{
protected:
T arr[size];
string name;
public:
// T &amp;operator[](unsigned int index) { return arr[index]; }

T &amp;at(unsigned int index, string m)
{
name =m;
try
{

if (index &lt; size &amp;&amp; m==&quot;karl&quot;)

return arr[size];

else
throw std::domain_error(&quot;invalid index&quot;);
}
catch (exception &amp;exc)
{
cout &lt;&lt; exc.what() &lt;&lt;endl;
}
}
};

////////////////////////////////////////////////////////////////////////
// ABGELEITETE TEMPLATEKLASSE

template &lt;class T, const unsigned int size ,const string &gt; class ArrayPlus : public Array&lt;T, size, string&gt;
{
private:
public:
ArrayPlus(const T &amp;initval, string m) //Array füllen
{
for (int i = 0; i &lt; size; i++)

arr[i] = (initval +&quot;name&quot;);
}

};
int main(void)
{
ArrayPlus&lt;char, 3, string&gt; ap(15.1,&quot;Hans&quot;); //double-&gt; zahlenform;3-&gt;für arraysize + initialisierung 1.1

ap[1] = 2.2,&quot;hans&quot;;

cout &lt;&lt; ap[0] &lt;&lt; endl;
cout &lt;&lt; ap[1] &lt;&lt; endl;
cout &lt;&lt; ap[2] &lt;&lt; endl;
cout &lt;&lt; ap.at(2) &lt;&lt; endl;

cout &lt;&lt; ap[3] &lt;&lt; endl; // Zufallswert, kein range-check!

cout &lt;&lt; ap.at(3) &lt;&lt; endl; // Abbruch mit out_of_range Exception!
</code></pre>
<p>Das wäre auch meine frage...const string als template Parameter???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216614</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:43:01 GMT]]></title><description><![CDATA[<p>mark79 schrieb:</p>
<blockquote>
<p>Das wäre auch meine frage...const string als template Parameter???</p>
</blockquote>
<p>Das hast du doch geschrieben. Also solltest du auch wissen, was es darstellen soll.<br />
Wie gesagt - nach meinem Kenntnisstand ist das nicht erlaubt. Du darfst als Template-Parameter nur 'Werte' angeben, die der Compiler bereits auswerten kann, das umfasst Datentypen (typename), Ganzzahl-Compilezeitkonstanten und Adressen von statisch gebundenen Variablen.</p>
<p>Also nochmal: Geht das Programm wirklich so durch den Compiler? Wenn ja, durch welchen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216618</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:46:24 GMT]]></title><description><![CDATA[<p>Habe doch geschrieben, dass es so nicht funktioniert...Also nicht durch den Compiler geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216622</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 08:58:17 GMT]]></title><description><![CDATA[<p>Dann erklär nochmal, was du genau vorhast mit dem Programm? Die meisten Stammgäste kennen sich gut genug mit c++ aus, um dir bei konkreten Problemen weiterhelfen zu können, aber aus so einem Programmschnipsel und der Erklärung &quot;das klappt nicht&quot; kann niemand etwas machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216633</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 25 Jan 2007 08:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 09:08:54 GMT]]></title><description><![CDATA[<p>OK, ist wirklich ungenügend ausgedrückt.<br />
Ich wollte im prinzip über meine template Klasse nicht nur mein Array füllen sondern auch noch über die initialisierung ein String übergeben....<br />
Also mein Programm ist wirklich Schrott.</p>
<pre><code class="language-cpp">ArrayPlus&lt;char, 3, string&gt; ap(15.1,&quot;Hans&quot;);
</code></pre>
<p>hier wollte ich mein Array mit 15.1 initialisieren und gleichzeitig so als<br />
&quot;index&quot; Hans übergeben.<br />
Aber ich glaube ich muß das ganze noch mal grundlegend überdenken!<br />
aber trotzdem danke.<br />
werde mich bemühen beim nächsten mal klarere Fragen zu stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216640</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 09:08:54 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 09:20:57 GMT]]></title><description><![CDATA[<p>mark79 schrieb:</p>
<blockquote>
<p>Also mein Programm ist wirklich Schrott.</p>
</blockquote>
<p>Gut erkannt <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="😉"
    /> Wenn du einen Stringwert zur Initialisierung mitgeben willst, mußt du den nicht als Template-Parameter eintragen, sondern nur im Ctor angeben und füllen:</p>
<pre><code class="language-cpp">template&lt;typename T,int size&gt;
class Array
{
  T vals[size];
public:
  Array(const T&amp; val)
  { for(int i=0;i&lt;size;++i) vals[i]=val; }
  ...
};

template&lt;typename T,int size&gt;
class ArrayPlus : public Array&lt;T,size&gt;
{
  string name;
public:
  ArrayPlus(const T&amp; val,const string&amp; n)
  : Array(val), name(n) {}
  ...
};
</code></pre>
<p>(abgesehen davon - in ein Array&lt;char,...&gt; wirst du nur schwer double-Werte reinpacken können)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216653</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 25 Jan 2007 09:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to vererbte TemplateKlasse mit string element on Thu, 25 Jan 2007 09:25:09 GMT]]></title><description><![CDATA[<p>Ja, verstehe was du meinst.<br />
Also ich werd das wohl Programm mal sanieren.<br />
Danke <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/1216658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216658</guid><dc:creator><![CDATA[mark79]]></dc:creator><pubDate>Thu, 25 Jan 2007 09:25:09 GMT</pubDate></item></channel></rss>