<?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[Mehrdeutiger Operator]]></title><description><![CDATA[<p>Hi, ich habe eine Double-Klasse geschrieben die einen</p>
<pre><code class="language-cpp">operator double() const;
</code></pre>
<p>Operator besitzt der diese in einen normalen double umwandeln kann. Nun habe ich eine weitere Klasse Thickness geschrieben die vier Double Member hat. Zudem sind für die Klasse Thickness die Operatoren</p>
<pre><code>bool operator==(const Thickness&amp; a, const Thickness&amp; b);
bool operator!=(const Thickness&amp; a, const Thickness&amp; b);
</code></pre>
<p>definiert.<br />
Wenn ich nun aber einen Double mit einem anderen Double vergleichen möchte<br />
z.B.</p>
<pre><code class="language-cpp">Double a, b;
a == a
b != b
</code></pre>
<p>Dann bekomme ich die Fehlermeldung C2088 und C2593</p>
<blockquote>
<p>IntelliSense: Mehr als ein &quot;!=&quot;-Operator stimmt mit diesen Operanden überein:<br />
Integrierter &quot;arithmetic != arithmetic&quot;-Operator</p>
</blockquote>
<p>kann dies aber nicht nachvollziehen. Jemand eine Idee bzw. Lösung für dieses Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307423/mehrdeutiger-operator</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 18:01:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307423.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Aug 2012 17:54:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdeutiger Operator on Sun, 26 Aug 2012 17:54:28 GMT]]></title><description><![CDATA[<p>Hi, ich habe eine Double-Klasse geschrieben die einen</p>
<pre><code class="language-cpp">operator double() const;
</code></pre>
<p>Operator besitzt der diese in einen normalen double umwandeln kann. Nun habe ich eine weitere Klasse Thickness geschrieben die vier Double Member hat. Zudem sind für die Klasse Thickness die Operatoren</p>
<pre><code>bool operator==(const Thickness&amp; a, const Thickness&amp; b);
bool operator!=(const Thickness&amp; a, const Thickness&amp; b);
</code></pre>
<p>definiert.<br />
Wenn ich nun aber einen Double mit einem anderen Double vergleichen möchte<br />
z.B.</p>
<pre><code class="language-cpp">Double a, b;
a == a
b != b
</code></pre>
<p>Dann bekomme ich die Fehlermeldung C2088 und C2593</p>
<blockquote>
<p>IntelliSense: Mehr als ein &quot;!=&quot;-Operator stimmt mit diesen Operanden überein:<br />
Integrierter &quot;arithmetic != arithmetic&quot;-Operator</p>
</blockquote>
<p>kann dies aber nicht nachvollziehen. Jemand eine Idee bzw. Lösung für dieses Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245699</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Sun, 26 Aug 2012 17:54:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Sun, 26 Aug 2012 18:12:01 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">Wie Code posten</a></p>
<p>Klassendefinition?<br />
Funktionsdeklarationen?<br />
Exakte Fehlermeldung einschließlich aller Hinweise dazu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245705</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 26 Aug 2012 18:12:01 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Mon, 27 Aug 2012 07:31:17 GMT]]></title><description><![CDATA[<p>Ist dir schon aufgefallen, dass du a mit a vergleichst und b mit b?<br />
Des weiteren ist dir sicherlich bewusst, dass sowohl deine beiden Testdoubles (a, b) als auch die Funktionsparameter der Operatorüberladung dieselben Namen haben.<br />
Ansonsten schließ ich mich camper an. Vllt. liegt der Fehler in der double-Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245823</guid><dc:creator><![CDATA[Ich bin Matrix...]]></dc:creator><pubDate>Mon, 27 Aug 2012 07:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Mon, 27 Aug 2012 18:42:21 GMT]]></title><description><![CDATA[<p>Also die Probleme konnte ich jetzt damit beseitigen, dass ich zusätzlich zu</p>
<pre><code class="language-cpp">bool operator==(const Double&amp; a, const Double&amp; b);
</code></pre>
<p>noch</p>
<pre><code class="language-cpp">bool operator==(double a, const Double&amp; b);
</code></pre>
<p>und</p>
<pre><code class="language-cpp">bool operator==(const Double&amp; a, double b);
</code></pre>
<p>implementiert habe. Allerdings meckert er jetzt wieder an anderer Stelle, z.B.<br />
wenn folgendes geprüft wird</p>
<pre><code class="language-cpp">if (value == 0)
</code></pre>
<p>da er &quot;0&quot; als int interpretiert. D.h. wenn ich das richtig sehe muüsste ich jetzt noch zusätzlich für alle anderen Standard-Typen wie int, short, long long, usw. entsprechende Operatoren anbieten. Ganzschön aufwendig das ganze ;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246026</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Mon, 27 Aug 2012 18:42:21 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Mon, 27 Aug 2012 19:43:57 GMT]]></title><description><![CDATA[<p>Und was wäre von dieser Implementierung der Operatoren zu halten. Ich traue es mich kaum den Code zu posten ;).</p>
<pre><code class="language-cpp">bool operator!=(const Double&amp; value1, bool value2)
{
	return (static_cast&lt;double&gt;(value1) != value2);
}

bool  operator!=(const Double&amp; value1, double value2)
{
	return (static_cast&lt;double&gt;(value1) != value2);
}

bool operator!=(const Double&amp; value1, float value2)
{
	return (static_cast&lt;double&gt;(value1) != value2);
}

usw.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246050</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Mon, 27 Aug 2012 19:43:57 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Mon, 27 Aug 2012 21:02:56 GMT]]></title><description><![CDATA[<p>Ohne das gutheißen zu wollen und ohne genau zu wissen, wo Du hinwillst, kann man das aber auch mit Templates lösen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
bool operator==(const Double&amp; d, const T&amp; t)
{
    return static_cast&lt;double&gt;(d) == t;
}
</code></pre>
<p>Und wie gesagt, mehr Code wär von Not.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246079</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 27 Aug 2012 21:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 01:56:13 GMT]]></title><description><![CDATA[<p>Dein Problem wird dadurch ausgelöst, dass deine Doubleklasse einen Implizieten Konstruktor anbietet, der sie in eine normale Double umwandelt. Vermutlich hast auch einen Konstruktor, der eine double annimt. Da ist das Problem. Die impliziete Umwandung von Double in double muss weg! Mach eine Funktion draus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246121</guid><dc:creator><![CDATA[Die erinnerung]]></dc:creator><pubDate>Tue, 28 Aug 2012 01:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 16:11:44 GMT]]></title><description><![CDATA[<p>Die erinnerung schrieb:</p>
<blockquote>
<p>Dein Problem wird dadurch ausgelöst, dass deine Doubleklasse einen Implizieten Konstruktor anbietet, der sie in eine normale Double umwandelt. Vermutlich hast auch einen Konstruktor, der eine double annimt. Da ist das Problem. Die impliziete Umwandung von Double in double muss weg! Mach eine Funktion draus!</p>
</blockquote>
<p>Das ist ein guter Tipp, habe jetzt testweise mal den implizieten Operator entfernt und eine Funktion angeboten die den normalen double zurückgibt. Diese Variante hat nur einen Haken. Ich kann jetzt z.B. keine Int32 mehr von einem Double subtrahieren, müsste also auch hier wieder sämtliche Operator-Kombinationen implementieren. Zudem hätte ich überall im Code diese GetValue-Funktion die den normalen double zurückgibt.</p>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>Ohne das gutheißen zu wollen und ohne genau zu wissen, wo Du hinwillst, kann man das aber auch mit Templates lösen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
bool operator==(const Double&amp; d, const T&amp; t)
{
    return static_cast&lt;double&gt;(d) == t;
}
</code></pre>
</blockquote>
<p>Das wäre schonmal eine Erleichterung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246384</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Tue, 28 Aug 2012 16:11:44 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 16:28:56 GMT]]></title><description><![CDATA[<p>Hat jemand eine Glaskugel übrig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246392</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Aug 2012 16:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 16:32:40 GMT]]></title><description><![CDATA[<p>Das einfachste wäre ich könnte auf diese ganzen Operatoren verzichten und belasse den &quot;implizieten&quot; Operator. Allerdings habe ich da ja diese seltsame Fehlermeldung. Mir ist es sogar gelungen ein Minimalbeispiel zu stricken:</p>
<pre><code class="language-cpp">bool operator==(const B&amp; a1, const B&amp; a2);
bool operator!=(const B&amp; a1, const B&amp; a2);

class A
{
public:
	operator double() const;
private:
	double value;
};

A::operator double() const
{
	return value;
}

class B
{
public:
	B(A a);	//Das ist der Schlawiener

	void Test();
private:
	A a1;
	A a2;
};

B::B(A a)
{
}

void B::Test()
{
	if (a1 == a2)    // HIER KOMMT DER FEHLER
	{
	}
}

bool operator==(const B&amp; a1, const B&amp; a2)
{
	return true;
}

bool operator!=(const B&amp; a1, const B&amp; a2)
{
	return true;
}

int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
</code></pre>
<p>Warum wird hier ein mehrdeutiger Operator gefunden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246394</guid><dc:creator><![CDATA[MejrdeutigerOperator]]></dc:creator><pubDate>Tue, 28 Aug 2012 16:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 16:38:43 GMT]]></title><description><![CDATA[<p>MejrdeutigerOperator schrieb:</p>
<blockquote>
<p>Warum wird hier ein mehrdeutiger Operator gefunden?</p>
</blockquote>
<p>Weil die Konvertierung durch Konstruktor gleich gut/schlecht wie die mittels Konvertierungsoperator ist. Welche Variante willst du denn eigentlich?<br />
Den eingebauten Operator oder den für B? Oder etwa einen für A, den du vergessen hast zu implementieren.<br />
Du könntest auch den Konstruktor von B (oder auch den Konvertierunsgoperator in A mit C++11) explizit deklarieren. Ob das semantisch sinnvoll ist, lässt sich nat. bei Namne wie A und B kaum begründen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246398</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Aug 2012 16:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 17:41:55 GMT]]></title><description><![CDATA[<p>Häh, ich vergleiche hier zwei Objekte der Klasse A das hat mit der Klasse B rein gar nichts zu tun. Warum der Compiler nun meint die A's in ein B umzuwandeln zu müssen ist mir ein Rätsel. Scheinbar sind Computer noch viel dümmer als ich angenommen hatte. Das einzig logische wäre die A's in einen double zu wandeln.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Nochmal hier gibt es keine Varianten. Klasse A und B hat rein gar nichts miteinander zu tun. Wozu gebe ich diesem bescheuerten Compiler im operator== dann überhaupt noch Datentypen an, wenn er sowieso alle Datentypen in betracht nimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246415</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Tue, 28 Aug 2012 17:41:55 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 17:46:26 GMT]]></title><description><![CDATA[<p>Um es nochmal so auszudrücken. Der Compiler merkt also, dass für die Klasse A gar kein operator== definiert wurde. Anstatt nun Klasse A dank des implementierten</p>
<pre><code>operator double() const;
</code></pre>
<p>Operators in einen double zu wandeln, nimmt er sich stattdessen den nächst besten operator== den er finden kann, auch wenn dieser für ganz andere Datentypen definiert wurde. Unglaublich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246419</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Tue, 28 Aug 2012 17:46:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 17:52:44 GMT]]></title><description><![CDATA[<p>Ich kann ja noch nachvollziehen, dass der Compiler aufgrund des Konstruktors der Klasse B der einen double entgegen nimmt auch diesen &quot;Umwandlungsweg&quot; in Betracht nimmt, aber er müsste dann doch merken, dass ein A nunmal kein B ist und dafür auch keine Umwandlung vorhanden ist und diesen &quot;Umwandlungsweg&quot; dann wieder verwerfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246423</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Tue, 28 Aug 2012 17:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 18:10:25 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">void B::Test()
{
    if (a1 == a2)    // HIER KOMMT DER FEHLER
    {
    }
}
</code></pre>
<p>Natürlich kommt da ein Fehler. Soll da nun</p>
<ol>
<li><code>a1</code> und <code>a2</code> implizite nach <code>B</code> konvertiert und danach deine <code>operator==</code> Funktion aufgerufen werden?</li>
<li><code>a1</code> und <code>a2</code> impliziet nach <code>double</code> konvertiert und danach die built-in <code>operator==</code> Funktion aufgerufen werden?</li>
</ol>
<p>Diese Frage kannst nur dur beantworten, nicht ich nicht der Compiler und auch sonst niemand. Also sei so lieb und beantworte diese Frage dem Compiler. <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>Du kannst also entweder die implizite Konvertierung nach <code>B</code> verhindern, indem du den Konstruktor <code>explicit</code> machst. Oder aber du castest explizit nach <code>double</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246424</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 28 Aug 2012 18:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 18:13:37 GMT]]></title><description><![CDATA[<p>MehrdeutigerOperator schrieb:</p>
<blockquote>
<p>Häh, ich vergleiche hier zwei Objekte der Klasse A das hat mit der Klasse B rein gar nichts zu tun. Warum der Compiler nun meint die A's in ein B umzuwandeln zu müssen ist mir ein Rätsel. Scheinbar sind Computer noch viel dümmer als ich angenommen hatte. Das einzig logische wäre die A's in einen double zu wandeln.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Nochmal hier gibt es keine Varianten. Klasse A und B hat rein gar nichts miteinander zu tun. Wozu gebe ich diesem bescheuerten Compiler im operator== dann überhaupt noch Datentypen an, wenn er sowieso alle Datentypen in betracht nimmt.</p>
</blockquote>
<pre><code class="language-cpp">class B
{
public:
	B(A a);
</code></pre>
<p>Hiermit wird ein Konvertierungskonstruktor deklariert. Somit kann an (fast) jeder Stelle, an der eigentlich ein B erwartet wird, ein A verwendet werden.<br />
Der Vergleichsoperator für B hat 2 B-Parameter, und kann dank dieses Konvertierungskonstruktors auch mit A-Argumenten aufgerufen werden.<br />
Gleichermassen kann der eingebaute Vergleichsoperator für double eigentlich nur mit double-Argumenten arbeiten. Dank des deklarierten double-Konvertierungsoperators kann dieser Vergleichsoperator aber auch mit A-Argumenten gefüttert werden.</p>
<p>Beide Optionen sind aus Sicht des Compilers gleichwertig, weil sie beide den Aufruf einer Konvertierungsfunktion erfordern.</p>
<p>Es gibt verschiedene Wege, diese Mehrdeutigkeit aufzulösen, allerdings keinen allgemingültigen, weil sie an anderer Stelle unterschiedliche Folgen haben. Konsequenterweise lässt sich mit Metasyntaktischen A und B kein guter Rat geben.<br />
Die einzige Regel, die meist beachtet werden kann, ist es , implizite Konvertierungen nur Bedacht einzusetzen (was nicht weiterhilft, wenn sie eben doch mal gebraucht werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246426</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Aug 2012 18:13:37 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Tue, 28 Aug 2012 19:12:54 GMT]]></title><description><![CDATA[<p>MehrdeutigerOperator schrieb:</p>
<blockquote>
<p>Ich kann ja noch nachvollziehen, dass der Compiler aufgrund des Konstruktors der Klasse B der einen double entgegen nimmt auch diesen &quot;Umwandlungsweg&quot; in Betracht nimmt, aber er müsste dann doch merken, dass ein A nunmal kein B ist und dafür auch keine Umwandlung vorhanden ist und diesen &quot;Umwandlungsweg&quot; dann wieder verwerfen.</p>
</blockquote>
<p>B hat keinen Konstruktor für double, nur einen für A.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246440</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Aug 2012 19:12:54 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Wed, 29 Aug 2012 17:27:55 GMT]]></title><description><![CDATA[<p>[gg]</p>
<p>camper schrieb:</p>
<blockquote>
<p>]B hat keinen Konstruktor für double, nur einen für A.</p>
</blockquote>
<p>Da hast du du natürlich recht.<br />
Wie würdet ihr denn eine solche Wrapper-Klasse, um einen Standard-Datenyp gestalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246780</guid><dc:creator><![CDATA[MehrdeutigerOperator]]></dc:creator><pubDate>Wed, 29 Aug 2012 17:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Wed, 29 Aug 2012 19:07:07 GMT]]></title><description><![CDATA[<p>MehrdeutigerOperator schrieb:</p>
<blockquote>
<p>[gg]</p>
<p>camper schrieb:</p>
<blockquote>
<p>]B hat keinen Konstruktor für double, nur einen für A.</p>
</blockquote>
<p>Da hast du du natürlich recht.<br />
Wie würdet ihr denn eine solche Wrapper-Klasse, um einen Standard-Datenyp gestalten?</p>
</blockquote>
<p>Gar nicht?</p>
<p>Ohne jetzt den Thread zu erforschen, wofür brauchste das?</p>
<p>Ich würde einfach einen Konvertierungsoperator für eine Referenz und eine Kopie bereitstellen, und ein Internes Objekt halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246801</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 19:07:07 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdeutiger Operator on Wed, 29 Aug 2012 19:14:50 GMT]]></title><description><![CDATA[<p>Möglicherweise sowas:</p>
<pre><code class="language-cpp">template&lt;typename Type&gt;
struct ScalarWrapper
{
        static_assert(std::is_arithmetic&lt;Type&gt;::value, &quot;Has to have scalar type!&quot;);

        ScalarWrapper(Type const t) noexcept:
                mInst(t) {}

        constexpr ScalarWrapper() noexcept = default;

        operator Type&amp;() noexcept {return mInst;}
        operator Type() const noexcept {return mInst;}

private:

        Type mInst;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246804</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 19:14:50 GMT</pubDate></item></channel></rss>