<?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[Compiler meckert wegen Konstruktor - Warum?]]></title><description><![CDATA[<p>Also ich habe folgendes Problem. Wenn ich versuche zwei Klassen zu kompilieren meldet der Compiler folgenden Fehler</p>
<blockquote>
<p>'SmsText::SMSTextImpl' : no appropriate default constructor available</p>
</blockquote>
<p>Der Konstruktor von SMSTextImpl ist dieser:</p>
<pre><code class="language-cpp">SMSTextImpl::
SMSTextImpl()
:g_hSMSAPIdll(NULL), 
 sms_sendsms(NULL),
 sms_sendbatch(NULL),
 sms_getreport(NULL),
 sms_getinbox(NULL),
 sms_getcredits(NULL),
 sms_initialize_defaults(NULL),
 text_(&quot;smstxt32.dll&quot;)
{
	this -&gt; Init(this -&gt; text_.c_str());
}
</code></pre>
<p>Der Fehler trifft in dieser Stelle:</p>
<pre><code class="language-cpp">SmsText::SmsText()
: pimpl_(new SMSTextImpl())
{}
</code></pre>
<p>Ich kann mir diesen Fehler nicht erklaeren, SMSTextImpl() hat doch keine Argumente. Wird vielleicht implizit ein anderer Konstruktor erwartet den die Klasse nicht zu bieten hat? Oder liegt der Fehler ganz wo anders? Die Klassen sind in diesen beiden Dateien untergebracht:<br />
smstest.h <a href="http://nopaste.com/p/aKVtnaosv" rel="nofollow">http://nopaste.com/p/aKVtnaosv</a><br />
smstest.cpp <a href="http://nopaste.com/p/a208X7Gd3" rel="nofollow">http://nopaste.com/p/a208X7Gd3</a><br />
Bin um jede Hilfe danbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/249452/compiler-meckert-wegen-konstruktor-warum</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 12:15:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/249452.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Sep 2009 00:08:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Compiler meckert wegen Konstruktor - Warum? on Tue, 08 Sep 2009 00:08:24 GMT]]></title><description><![CDATA[<p>Also ich habe folgendes Problem. Wenn ich versuche zwei Klassen zu kompilieren meldet der Compiler folgenden Fehler</p>
<blockquote>
<p>'SmsText::SMSTextImpl' : no appropriate default constructor available</p>
</blockquote>
<p>Der Konstruktor von SMSTextImpl ist dieser:</p>
<pre><code class="language-cpp">SMSTextImpl::
SMSTextImpl()
:g_hSMSAPIdll(NULL), 
 sms_sendsms(NULL),
 sms_sendbatch(NULL),
 sms_getreport(NULL),
 sms_getinbox(NULL),
 sms_getcredits(NULL),
 sms_initialize_defaults(NULL),
 text_(&quot;smstxt32.dll&quot;)
{
	this -&gt; Init(this -&gt; text_.c_str());
}
</code></pre>
<p>Der Fehler trifft in dieser Stelle:</p>
<pre><code class="language-cpp">SmsText::SmsText()
: pimpl_(new SMSTextImpl())
{}
</code></pre>
<p>Ich kann mir diesen Fehler nicht erklaeren, SMSTextImpl() hat doch keine Argumente. Wird vielleicht implizit ein anderer Konstruktor erwartet den die Klasse nicht zu bieten hat? Oder liegt der Fehler ganz wo anders? Die Klassen sind in diesen beiden Dateien untergebracht:<br />
smstest.h <a href="http://nopaste.com/p/aKVtnaosv" rel="nofollow">http://nopaste.com/p/aKVtnaosv</a><br />
smstest.cpp <a href="http://nopaste.com/p/a208X7Gd3" rel="nofollow">http://nopaste.com/p/a208X7Gd3</a><br />
Bin um jede Hilfe danbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774197</guid><dc:creator><![CDATA[spongebob1011101]]></dc:creator><pubDate>Tue, 08 Sep 2009 00:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler meckert wegen Konstruktor - Warum? on Tue, 08 Sep 2009 01:19:41 GMT]]></title><description><![CDATA[<p>Klasse lebt in anderer Klasse drin! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<pre><code class="language-cpp">#include &quot;testsms.h&quot;
#include &quot;smsapi.h&quot;

class SMSText::SMSTextImpl
{
public:
        SMSTextImpl();
        ~SMSTextImpl();

        HINSTANCE                          g_hSMSAPIdll;
        SMSAPIFUNCTION_SENDSMS             sms_sendsms;
...

SMSTEXT::SMSTextImpl::
SMSTextImpl()
:g_hSMSAPIdll(NULL), 
 sms_sendsms(NULL),
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1774203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774203</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 08 Sep 2009 01:19:41 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler meckert wegen Konstruktor - Warum? on Tue, 08 Sep 2009 09:49:31 GMT]]></title><description><![CDATA[<p>Der Gültigkeitsbereich von &quot;Geschachtelten Klassen&quot; die innerhalb der Klasse vereinbart werden sind auf diese Klasse beschränkt. Was du machst ist die globale Redefinition ausserhalb der Klasse. Für den Compiler existieren jetzt zwei Klassen SMSTextImpl eine <em>SMSText::SMSTextImpl</em> und eben <em>SMSTextImpl</em>, beim Aufruf kennt der Complier nur die Forward-Deklaration SMSText::SMSTextImpl und versucht eine Instanz davon zu erzeugen, aber das kann er nicht weil die Defefintion fehlt</p>
<p>Um die Forward-Deklaration gültig aufzulösen musst du den namespace deiner Klasse voranstellen, damit die Klasse gültig aufgelöst werden kann:</p>
<pre><code class="language-cpp">class SMSText::SMSTextImpl
{
public:
        SMSTextImpl();
        ~SMSTextImpl();
        void Cleanup();
.
.
.

};

SMSText::SMSTextImpl::
SMSTextImpl()
:g_hSMSAPIdll(NULL), 
 sms_sendsms(NULL),
 sms_sendbatch(NULL),
 sms_getreport(NULL),
 sms_getinbox(NULL),
 sms_getcredits(NULL),
 sms_initialize_defaults(NULL),
 text_(&quot;smstxt32.dll&quot;)
{
        this -&gt; Init(this -&gt; text_.c_str());
}

SMSText::SMSTextImpl::
~SMSTextImpl()
{
        try
        {
                this -&gt; Cleanup();
        }
        catch(...)
        {
                // do nothing
        }
}
.
.
.
</code></pre>
<p>wie volkhard es schon gesagt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774349</guid><dc:creator><![CDATA[DeepCopy]]></dc:creator><pubDate>Tue, 08 Sep 2009 09:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler meckert wegen Konstruktor - Warum? on Tue, 08 Sep 2009 11:46:08 GMT]]></title><description><![CDATA[<p>Danke euch beiden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Wenn ich sehe wie schnell ihr geantwortet habt und wie lange ich danach gekaut habe komme ich mir ziemlich dumm vor <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="😞"
    /> Nochmals danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1774501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1774501</guid><dc:creator><![CDATA[spongebob1011101]]></dc:creator><pubDate>Tue, 08 Sep 2009 11:46:08 GMT</pubDate></item></channel></rss>