<?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[Überladene Funktion]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich hab ein Problem mit einer überladenen Funktion.</p>
<pre><code class="language-cpp">Socket();
Socket(SOCKET s);
Socket(const Socket&amp; s);
</code></pre>
<p>Das ist die Deklaration.</p>
<p>Jetzt will ich den Zustand meines Sockets prüfen.</p>
<pre><code class="language-cpp">Socket s = m_socket.Accept(addr);
if( !s )
	break;
</code></pre>
<p>jetzt sagt mir der .NET Compiler, dass <strong>!s</strong> mehrdeutig sei, was der Compiler VC++ 6.0 nicht gemacht hat. Wie kann ich die abfrage jetzt umgestalten, das er keinen Fehler mehr rauswirft?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/66654/überladene-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 05 Jun 2026 22:57:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/66654.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Mar 2004 13:26:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 13:26:50 GMT]]></title><description><![CDATA[<p>Hi @all,</p>
<p>ich hab ein Problem mit einer überladenen Funktion.</p>
<pre><code class="language-cpp">Socket();
Socket(SOCKET s);
Socket(const Socket&amp; s);
</code></pre>
<p>Das ist die Deklaration.</p>
<p>Jetzt will ich den Zustand meines Sockets prüfen.</p>
<pre><code class="language-cpp">Socket s = m_socket.Accept(addr);
if( !s )
	break;
</code></pre>
<p>jetzt sagt mir der .NET Compiler, dass <strong>!s</strong> mehrdeutig sei, was der Compiler VC++ 6.0 nicht gemacht hat. Wie kann ich die abfrage jetzt umgestalten, das er keinen Fehler mehr rauswirft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/470769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470769</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Mon, 01 Mar 2004 13:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 13:45:05 GMT]]></title><description><![CDATA[<p>Die überladenen konstruktoren haben mit !s nichts zu tun. Ist da ein bool, int oder sonst ein operator überladen der ein ! erlauben würde? Falls ja, machen nen expliziten cast für den typen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/470780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470780</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Mon, 01 Mar 2004 13:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 14:09:43 GMT]]></title><description><![CDATA[<p>Hi CMatt,</p>
<p>irgendwie versteh ich nicht so ganz, was Du meinst.<br />
Ich habe das jetzt umgeschrieben und es klappt auch.</p>
<pre><code class="language-cpp">Socket s = m_socket.Accept(addr);
if( s )
{
	// Alles i.O.
}
else
	break;
</code></pre>
<p>Aber das Problem ist dadurch noch nicht ganz gelöst, da ich es an einer weiteren Stelle habe.</p>
<pre><code class="language-cpp">ASSERT(m_hThread==NULL &amp;&amp; !m_socket);
</code></pre>
<p>Fehlermeldung: irc.cpp(167): error C2593: 'Operator !' ist mehrdeutig</p>
<p>Wenn ich das ! weglasse sagt der Compiler &amp;&amp; ist mehrdeutig<br />
Was kann ich dagegen tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/470809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470809</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Mon, 01 Mar 2004 14:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 14:39:11 GMT]]></title><description><![CDATA[<p>Kurze erklärung zu &quot;Fehlermeldung: irc.cpp(167): error C2593: 'Operator !' ist mehrdeutig &quot;:<br />
Der compiler finded mehrer Möglichkeiten ein ! auf deine Kalsse anzuwenden und weis nun nicht welcher er vewenden soll.<br />
bsp:</p>
<pre><code class="language-cpp">class MyClass {
public
  operator short();
  operator long();
};

//...
MyClass obj;
if(obj == 100) {
  // bla
}
</code></pre>
<p>Die Klasse MyClass hat einen short und einen long operator. Wenn ich jetzt z.b eine if(obj == 100) darauf aufrufe kommt der complier ins grüblen, da er 100 als short und als long betrachten kann und so nicht weis welche der 2 Methoden er nun verwenden soll um die Klasse zu casten. Abhilfe bringt dann z.b so was:</p>
<pre><code class="language-cpp">MyClass obj;
if((short)obj == 100) { // verwende den short operator zum vergleichen
  // bla
}
</code></pre>
<p>Hoffe es jetzt ist klar was da bei passiert <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/470846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470846</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Mon, 01 Mar 2004 14:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 14:51:06 GMT]]></title><description><![CDATA[<p>Hi CMatt,</p>
<p>jup, habe verstanden was Du meinst. Leider ist das in meinem Fall etwas schwieriger.<br />
m_Socket ist ne Variable vom Typ Socket.<br />
Die Socketklasse sieht so aus.</p>
<pre><code class="language-cpp">public :
		Socket();
		Socket(SOCKET s);
		Socket(const Socket&amp; s);
		virtual ~Socket();
		bool Create();
		void Close();
		bool Bind(const InetAddr&amp; addr);
		bool Connect(const InetAddr&amp; addr);
		bool Listen();
		Socket Accept(InetAddr&amp; addr);
		int Send(const unsigned char* buf, int cbBuf);
		int Send(const char* fmt, ...);
		int Receive(unsigned char* buf, int cbBuf);
		bool SetOpt(int opt, const char* pBuf, int cbBuf);
		bool GetOpt(int opt, char* pBuf, int&amp; cbBuf);
		operator SOCKET&amp; () const { return (SOCKET&amp;)m_sock; }
		operator bool() const { return m_sock != INVALID_SOCKET; }

	protected :
		SOCKET m_sock;

	private :
		bool m_bOwnSocket;
</code></pre>
<p>Ich hab einen blassen Schimmer was man den da nimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/470864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470864</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Mon, 01 Mar 2004 14:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 14:59:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">operator SOCKET&amp; () const { return (SOCKET&amp;)m_sock; }
operator bool() const { return m_sock != INVALID_SOCKET; }
</code></pre>
<p>typedef UINT_PTR SOCKET; --&gt;&gt; typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;</p>
<p>SOCKET ist also vom type unsigned int, was soll der complier nun bei deinem ! nehmen? Er kann sowohl unsigned int, als acuh bool auf ungliech null vergleichen <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="😉"
    /><br />
Du kannst also zwischen</p>
<pre><code class="language-cpp">if( !(bool)s )
</code></pre>
<p>und</p>
<pre><code class="language-cpp">if( (SOCKET)s == INVALID_SOCKET )
</code></pre>
<p>als Lösung wählen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/470878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470878</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Mon, 01 Mar 2004 14:59:21 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 15:08:13 GMT]]></title><description><![CDATA[<p>Habe jetzt</p>
<pre><code class="language-cpp">ASSERT(m_hThread==NULL &amp;&amp; ((SOCKET)m_socket == INVALID_SOCKET ));
</code></pre>
<p>eingegeben.<br />
Und alles wurd schlimmer <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>
<pre><code>error LNK2001: Nichtaufgelöstes externes Symbol &quot;class irc::CIrcSession g_ircSession&quot; (?g_ircSession@@3VCIrcSession@irc@@A)
error LNK2001: Nichtaufgelöstes externes Symbol &quot;private: static class std::map&lt;char const *,bool (__thiscall irc::CIrcMonitor::*)(class irc::CIrcMessage const *),struct irc::CIrcMonitor::LessString,class std::allocator&lt;struct std::pair&lt;char const * const,bool (__thiscall irc::CIrcMonitor::*)(class irc::CIrcMessage const *)&gt; &gt; &gt; irc::CIrcDefaultMonitor::m_handlers&quot; (?m_handlers@CIrcDefaultMonitor@irc@@0V?$map@PBDP8CIrcMonitor@irc@@AE_NPBVCIrcMessage@2@@ZULessString@12@V?$allocator@U?$pair@QBDP8CIrcMonitor@irc@@AE_NPBVCIrcMessage@2@@Z@std@@@std@@@std@@A)
error LNK2001: Nichtaufgelöstes externes Symbol &quot;private: static struct irc::CIrcMonitor::IrcCommandsMapsListEntry irc::CIrcDefaultMonitor::m_handlersMapsListEntry&quot; (?m_handlersMapsListEntry@CIrcDefaultMonitor@irc@@0UIrcCommandsMapsListEntry@CIrcMonitor@2@A)
fatal error LNK1120: 3 unaufgelöste externe Verweise
</code></pre>
<p>Was nu <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/470905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470905</guid><dc:creator><![CDATA[Trikor]]></dc:creator><pubDate>Mon, 01 Mar 2004 15:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to Überladene Funktion on Mon, 01 Mar 2004 16:26:05 GMT]]></title><description><![CDATA[<p>1. ASSERT löst bei FALSE aus, das hier fliegt dir also um die ohren wenn alles ok ist.<br />
2. Alle cpp's ans projekt gehängt? <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/470956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/470956</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Mon, 01 Mar 2004 16:26:05 GMT</pubDate></item></channel></rss>