<?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[Sicherbarkeit baseclass mit rein virtuellen member funktionen]]></title><description><![CDATA[<p>hi leute,</p>
<p>steht grad etwas am schlauch. folgender code:</p>
<pre><code>class IConstKeyValueAnsi
{
   public:
      using size_type = unsigned int;
      using error_type = int;

      virtual auto __stdcall Key(void) const noexcept -&gt; const char* = 0;
      virtual auto __stdcall Value(void) const noexcept -&gt; const char* = 0;
}; /* class IConstKeyValueAnsi */

class IKeyValueAnsi : public IConstKeyValueAnsi
{
   public:
      using size_type = IConstKeyValueAnsi::size_type;
      using error_type = IConstKeyValueAnsi::error_type;

      virtual auto __stdcall Key(const char *str) noexcept -&gt; error_type = 0;
      virtual auto __stdcall Value(const char *str) noexcept -&gt; error_type = 0;
      virtual auto __stdcall Set(const char *t_key, const char *t_value) noexcept -&gt; error_type = 0;
}; /* class IKeyValueAnsi */
</code></pre>
<p>einer anderen klasse uebergebe ich einen pointer auf IKeyValueAnsi:</p>
<pre><code>auto key_value_list_ansi::Add(const IKeyValueAnsi * data) noexcept -&gt; error_type
{
   int err = 0;
   try
   {
      err = add(data-&gt;Key(), data-&gt;Value()); 
   }
   catch(const std::bad_alloc&amp;)
   {
      err = static_cast&lt;int&gt;(interface_error_codes::bad_alloc);
   }

   return err;
}
</code></pre>
<p>hier kennt er scheinbar nur die member funktionen von IKeyValueAnsi, aber nicht von IConstKeyValueAnsi.<br />
folgender code wiederum funktioniert:</p>
<pre><code>auto key_value_list_ansi::Add(const IKeyValueAnsi * data) noexcept -&gt; error_type
{
   int err = 0;
   try
   {
      const IConstKeyValueAnsi *temp = data;
      err = add(temp-&gt;Key(), temp-&gt;Value()); 
   }
   catch(const std::bad_alloc&amp;)
   {
      err = static_cast&lt;int&gt;(interface_error_codes::bad_alloc);
   }

   return err;
}
</code></pre>
<p>wo hab ich da den denkfehler ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339228/sicherbarkeit-baseclass-mit-rein-virtuellen-member-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 09:30:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339228.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Aug 2016 16:14:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sicherbarkeit baseclass mit rein virtuellen member funktionen on Sat, 13 Aug 2016 16:14:51 GMT]]></title><description><![CDATA[<p>hi leute,</p>
<p>steht grad etwas am schlauch. folgender code:</p>
<pre><code>class IConstKeyValueAnsi
{
   public:
      using size_type = unsigned int;
      using error_type = int;

      virtual auto __stdcall Key(void) const noexcept -&gt; const char* = 0;
      virtual auto __stdcall Value(void) const noexcept -&gt; const char* = 0;
}; /* class IConstKeyValueAnsi */

class IKeyValueAnsi : public IConstKeyValueAnsi
{
   public:
      using size_type = IConstKeyValueAnsi::size_type;
      using error_type = IConstKeyValueAnsi::error_type;

      virtual auto __stdcall Key(const char *str) noexcept -&gt; error_type = 0;
      virtual auto __stdcall Value(const char *str) noexcept -&gt; error_type = 0;
      virtual auto __stdcall Set(const char *t_key, const char *t_value) noexcept -&gt; error_type = 0;
}; /* class IKeyValueAnsi */
</code></pre>
<p>einer anderen klasse uebergebe ich einen pointer auf IKeyValueAnsi:</p>
<pre><code>auto key_value_list_ansi::Add(const IKeyValueAnsi * data) noexcept -&gt; error_type
{
   int err = 0;
   try
   {
      err = add(data-&gt;Key(), data-&gt;Value()); 
   }
   catch(const std::bad_alloc&amp;)
   {
      err = static_cast&lt;int&gt;(interface_error_codes::bad_alloc);
   }

   return err;
}
</code></pre>
<p>hier kennt er scheinbar nur die member funktionen von IKeyValueAnsi, aber nicht von IConstKeyValueAnsi.<br />
folgender code wiederum funktioniert:</p>
<pre><code>auto key_value_list_ansi::Add(const IKeyValueAnsi * data) noexcept -&gt; error_type
{
   int err = 0;
   try
   {
      const IConstKeyValueAnsi *temp = data;
      err = add(temp-&gt;Key(), temp-&gt;Value()); 
   }
   catch(const std::bad_alloc&amp;)
   {
      err = static_cast&lt;int&gt;(interface_error_codes::bad_alloc);
   }

   return err;
}
</code></pre>
<p>wo hab ich da den denkfehler ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505395</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 13 Aug 2016 16:14:51 GMT</pubDate></item><item><title><![CDATA[Reply to Sicherbarkeit baseclass mit rein virtuellen member funktionen on Sat, 13 Aug 2016 16:29:55 GMT]]></title><description><![CDATA[<p>Funktionen mit gleichem Namen aber anderer Signatur sind in einer abgeleiteten Klasse nicht sichtbar. Du musst sie mit using sichtbar machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505397</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 13 Aug 2016 16:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Sicherbarkeit baseclass mit rein virtuellen member funktionen on Sat, 13 Aug 2016 16:37:01 GMT]]></title><description><![CDATA[<p>yep genau. jetzt wo ichs gelesen hab faellt mir ein das ich das selbe problem vor paar wochen schon mal hier gepostet hab..</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505398</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 13 Aug 2016 16:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Sicherbarkeit baseclass mit rein virtuellen member funktionen on Sat, 13 Aug 2016 16:40:08 GMT]]></title><description><![CDATA[<p>wobei ich den sinn irgendwie nicht verstehe.<br />
wohl der grund warum ich es immmer wieder vergesse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2505400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2505400</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 13 Aug 2016 16:40:08 GMT</pubDate></item></channel></rss>