<?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[operator[] mit unterschiedlichen return]]></title><description><![CDATA[<p>heiho</p>
<p>es geht darum</p>
<p>ich will in meiner klasse den operator[] definieren,<br />
dieser unterscheidet sich aber nur am rueckgabewert!</p>
<p>char operator[](int nPos) const;<br />
wchar_t operator[](int nPos) const;</p>
<p>wie kann ich das problem loesen?<br />
bin voellig ratlos</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180937/operator-mit-unterschiedlichen-return</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:37:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180937.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 May 2007 13:00:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:00:45 GMT]]></title><description><![CDATA[<p>heiho</p>
<p>es geht darum</p>
<p>ich will in meiner klasse den operator[] definieren,<br />
dieser unterscheidet sich aber nur am rueckgabewert!</p>
<p>char operator[](int nPos) const;<br />
wchar_t operator[](int nPos) const;</p>
<p>wie kann ich das problem loesen?<br />
bin voellig ratlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280878</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 08 May 2007 13:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:02:05 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>...<br />
dieser unterscheidet sich ...</p>
</blockquote>
<p>unterscheidet sich von was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280879</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Tue, 08 May 2007 13:02:05 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:04:14 GMT]]></title><description><![CDATA[<p>Kurz: gar nicht - Überladungsauflösung betrachtet nur die Parameter (und die const-Qualifikation der Methode).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280881</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 08 May 2007 13:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:08:07 GMT]]></title><description><![CDATA[<p>dh ich kann das nur umgehen indem ich es in eine funktion auslager?</p>
<p>das is natuerlich bloed,<br />
ich wollte es so machen das der benutzer entweder einen char oder einen wchar_t bekommt, je nachdem wohin das zeichen gehen soll</p>
<p>muss ich wohl oder uebel sowas wie &quot;at(int, bool)&quot; machen<br />
gefaellt mir nur nicht wirklich<br />
dreckszeuch #mecker</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280885</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 08 May 2007 13:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:12:48 GMT]]></title><description><![CDATA[<p>Hat ja auch nichts mit dem Operator zu tun. Ist generell ne Einschränkung von C++. Wäre dir mit jeder anderen Funktion auch passiert.</p>
<p>Wenn du willst, das er A oder B bekommt, kannst du ja auch Templates benutzen. Sowas:</p>
<pre><code class="language-cpp">T operator[](int nPos) const;
</code></pre>
<p>Dann muß der User sowas machen:</p>
<pre><code class="language-cpp">char b = a&lt;char&gt;[1]; // hoffe die Syntax ist richtig...
wchar_t b = a&lt;wchar_t&gt;[1];
</code></pre>
<p>Den Typ muß er sowieso kennen... ob mit oder ohne Template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280891</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 08 May 2007 13:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:21:58 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>ich will in meiner klasse den operator[] definieren,<br />
dieser unterscheidet sich aber nur am rueckgabewert!</p>
<p>char operator[](int nPos) const;<br />
wchar_t operator[](int nPos) const;</p>
<p>wie kann ich das problem loesen?<br />
bin voellig ratlos</p>
</blockquote>
<p>durch zwei verschiedene klassen, eine für 'char' und eine für 'wchar_t', eventuell beide klassen von einer virtuellen basisklasse ableiten, die die ableitungen zwingt, den op[] zu überladen (ich weiss aber nicht ob das mit C++ möglich ist).</p>
<p>...oder ein template daraus machen.<br />
<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/1280896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280896</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Tue, 08 May 2007 13:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:29:08 GMT]]></title><description><![CDATA[<p>Das es Klassen werden, macht die Sache nicht besser oder funktionsfähiger! Es ist wie gesagt, völlig egal! Weil C++ generell keine Unterscheidung bei den Return-Typen macht. Und Klassen werden in C++ eh als Build-in Types behandelt... also kannste vergessen. Nur Templates wären möglich.</p>
<p>Man kann sich dafür mal den Code von boost.any anschauen, die machen sowas über Templates. (worauf ich in meinem vorherigen Post abziehle)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280903</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 08 May 2007 13:29:08 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 13:52:50 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Das es Klassen werden, macht die Sache nicht besser oder funktionsfähiger! Es ist wie gesagt, völlig egal! Weil C++ generell keine Unterscheidung bei den Return-Typen macht. Und Klassen werden in C++ eh als Build-in Types behandelt... also kannste vergessen. Nur Templates wären möglich.</p>
</blockquote>
<p>hab's grad' mal ausprobiert, geht einfach nur mit ableiten <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>
<pre><code>class A
{
    public: char operator[](int i)
    {
        return 10;
    }
};

class B : public A
{
    public: wchar_t operator[](int i)
    {
        return 1000;
    }
};

int main()
{
    A a;
    B b;
    printf (&quot;%d\n&quot;, a[0]); // 10
    printf (&quot;%d\n&quot;, b[0]); // 1000
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1280924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280924</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Tue, 08 May 2007 13:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 14:09:54 GMT]]></title><description><![CDATA[<p>Damit kannst aber nur schwer von ein und demselben Objekt beide Operatorn aufrufen:</p>
<p>pale dog schrieb:</p>
<blockquote>
<pre><code>class A
{
    public: char operator[](int i)
    {
        return 10;
    }
};

class B : public A
{
    public: wchar_t operator[](int i)
    {
        return 1000;
    }
};
</code></pre>
</blockquote>
<pre><code class="language-cpp">int main()
{
  B bobject;
  wchar_t w = bobject[0];  //geht ja 
  char c = bobject[0];  //moep - hier wird der compiler ne Umwandlung von wchar_t nach char versuchen

  char c2 = bobject.A::operator[](0); // Aufruf des Operators aus der Basisklasse.
                         //sowas in der Art liefert das gewuenschte, ist aber recht haesslich
};
</code></pre>
<p>daher halte ich artchis template-loesung fuer die eleganteste...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280935</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 08 May 2007 14:09:54 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 14:13:54 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>daher halte ich artchis template-loesung fuer die eleganteste...</p>
</blockquote>
<p>ich auch, keine frage <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/1280939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280939</guid><dc:creator><![CDATA[pale dog]]></dc:creator><pubDate>Tue, 08 May 2007 14:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to operator[] mit unterschiedlichen return on Tue, 08 May 2007 14:19:22 GMT]]></title><description><![CDATA[<p>Na, solls ne eigne String Klasse werden? <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>Was genau brauchst Du denn?</p>
<p>A) Eine Version für UNICODE-Programme und eine für MBCS/SBCS-Programme?</p>
<pre><code class="language-cpp">#include &lt;tchar.h&gt;
TCHAR operator[](int n) const;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> Beide Versionen in einem Programm?</p>
<pre><code class="language-cpp">class MyFoo {
//
 public:
    operator char() const;
    operator wchar_t() const;
};

class String {
//...
    MyFoo&amp; operator[](int n);
};
</code></pre>
<p>Das zurückgegebene MyFoo läasst sich dann wie gewünscht casten.</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280943</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Tue, 08 May 2007 14:19:22 GMT</pubDate></item></channel></rss>