<?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[Eigene Klasse in Form deklarieren .. geht nicht]]></title><description><![CDATA[<p>Also ich hab ein Form und sagen wir mal 2 KLassen..</p>
<p>die eine Klasse ist ein Klasse abgeleitet von TSTringGRid die andere ist keine VCL klasse.</p>
<p>Wenn ich nun unter</p>
<pre><code>void __fastcall Button14Click(TObject *Sender);
	void __fastcall Button15Click(TObject *Sender);
	void __fastcall Button16Click(TObject *Sender);
private:	// Anwender-Deklarationen

public:		// Anwender-Deklarationen
    user *myuser; &lt;-
	__fastcall TInterface(TComponent* Owner);
    dbcontainer *ap_container;
</code></pre>
<p>bringt er mir einen error, das user *myuser eine ungültige Deklaration ist.<br />
Die user.h ist oben inlcuded un funktionier auch in der cpp, aber nicht im Header.</p>
<p>Woran kann das liegen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/83016/eigene-klasse-in-form-deklarieren-geht-nicht</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 21:16:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/83016.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Aug 2004 00:14:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Tue, 17 Aug 2004 00:14:02 GMT]]></title><description><![CDATA[<p>Also ich hab ein Form und sagen wir mal 2 KLassen..</p>
<p>die eine Klasse ist ein Klasse abgeleitet von TSTringGRid die andere ist keine VCL klasse.</p>
<p>Wenn ich nun unter</p>
<pre><code>void __fastcall Button14Click(TObject *Sender);
	void __fastcall Button15Click(TObject *Sender);
	void __fastcall Button16Click(TObject *Sender);
private:	// Anwender-Deklarationen

public:		// Anwender-Deklarationen
    user *myuser; &lt;-
	__fastcall TInterface(TComponent* Owner);
    dbcontainer *ap_container;
</code></pre>
<p>bringt er mir einen error, das user *myuser eine ungültige Deklaration ist.<br />
Die user.h ist oben inlcuded un funktionier auch in der cpp, aber nicht im Header.</p>
<p>Woran kann das liegen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/584258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584258</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Tue, 17 Aug 2004 00:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Tue, 17 Aug 2004 06:57:38 GMT]]></title><description><![CDATA[<p>Klassennamen mit so allgemeinen Begriffen wie &quot;user&quot; oder &quot;system&quot; versuche ich zu vermeiden.<br />
Es muss nicht daran liegen, aber Du kannst ja mal versuchen für die Klasse und die Datei einen<br />
unverfänglichecheren Namen zu verwenden.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/584318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584318</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Tue, 17 Aug 2004 06:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Tue, 17 Aug 2004 11:59:17 GMT]]></title><description><![CDATA[<p>Fehlt das in der user.h:</p>
<pre><code class="language-cpp">#include &lt;Classes.hpp&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/584561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/584561</guid><dc:creator><![CDATA[Hoffmann_Till]]></dc:creator><pubDate>Tue, 17 Aug 2004 11:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Wed, 18 Aug 2004 10:12:26 GMT]]></title><description><![CDATA[<p>Classes hat gefehlt, habs rein, geht nicht.</p>
<p>Classenname kann nicht der Grund sein, habe schon andere probiert.</p>
<p>Wäre echt dankbar für die Lösung, danke an alle <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/585224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585224</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Wed, 18 Aug 2004 10:29:04 GMT]]></title><description><![CDATA[<p>Zeig doch mal mehr von Deiner Header-Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585242</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Wed, 18 Aug 2004 10:29:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Wed, 18 Aug 2004 22:59:59 GMT]]></title><description><![CDATA[<p>Form Interface</p>
<pre><code>#ifndef InterfaceH
#define InterfaceH
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ComCtrls.hpp&gt;
#include &lt;Tabnotbk.hpp&gt;

#include &quot;dbcontainer.h&quot;
#include &quot;DBGridDataConverter.h&quot;

#include &quot;projects.h&quot;
#include &lt;Menus.hpp&gt;
#include &quot;user.h&quot;

//---------------------------------------------------------------------------
class TInterface : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
	TGroupBox *GroupBox1;
	TButton *Button1;
	TButton *Button2;
	TButton *Button3;
	TButton *Button4;
	TPageControl *projects_sheet;
	TTabSheet *new_projects_frame;
	TTabSheet *act_projects_frame;
	TTabSheet *my_projects_frame;
	TTabSheet *search_projects_frame;
	TPopupMenu *all_projects_pm;
	TMenuItem *Details1;
	TGroupBox *project_details;
	TEdit *ap_title;
	TLabel *Label1;
	TEdit *ap_status;
	TLabel *Status;
	TLabel *ap_date;
	TMemo *ap_descr;
	TMemo *ap_addings;
	TLabel *Label2;
	TGroupBox *ap_gb_container;
	TButton *ap_back;
	TButton *sort_puid_pos;
	TButton *sort_puid_neg;
	TButton *Button7;
	TButton *Button8;
	TButton *Button9;
	TButton *Button11;
	TButton *Button12;
	TButton *Button13;
	TButton *Button14;
	TButton *Button15;
	TButton *Button16;
	TButton *Button5;
	void __fastcall act_projects_frameShow(TObject *Sender);
	void __fastcall Details1Click(TObject *Sender);
	void __fastcall ap_backClick(TObject *Sender);
	void __fastcall sort_puid_posClick(TObject *Sender);
	void __fastcall sort_puid_negClick(TObject *Sender);
	void __fastcall Button8Click(TObject *Sender);
	void __fastcall Button7Click(TObject *Sender);
	void __fastcall Button9Click(TObject *Sender);
	void __fastcall Button5Click(TObject *Sender);
	void __fastcall Button11Click(TObject *Sender);
	void __fastcall Button12Click(TObject *Sender);
	void __fastcall Button13Click(TObject *Sender);
	void __fastcall Button14Click(TObject *Sender);
	void __fastcall Button15Click(TObject *Sender);
	void __fastcall Button16Click(TObject *Sender);
private:	// Anwender-Deklarationen

public:		// Anwender-Deklarationen

	__fastcall TInterface(TComponent* Owner);

    dbcontainer *ap_container;
    user *myuser;

    void show_all_parojects();
    void show_projects_details(AnsiString pid);
    AnsiString action;
    AnsiString cur_pid;
    AnsiString sort_by;
    AnsiString sort_method;

};
</code></pre>
<p>an der stell user *myuser;<br />
gibt es folgenden debugger error :</p>
<p>[C++ Fehler] Interface.h(81): E2303 Typname erwartet<br />
[C++ Fehler] Interface.h(81): E2139 In Deklaration fehlt ;</p>
<p>Header user.h:<br />
[code]<br />
#ifndef userH<br />
#define userH<br />
#include &lt;Classes.hpp&gt;<br />
#include &quot;db_handle.h&quot;<br />
#include &quot;login.h&quot;<br />
//---------------------------------------------------------------------------</p>
<p>class user<br />
{<br />
protected:<br />
AnsiString user_id;<br />
AnsiString user_name;<br />
AnsiString user_pw;<br />
AnsiString user_group;<br />
public:<br />
user(){};<br />
bool user_login();<br />
bool logged_in();<br />
AnsiString get_user_group();<br />
AnsiString get_user_id();<br />
};</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585903</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Wed, 18 Aug 2004 22:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 06:43:01 GMT]]></title><description><![CDATA[<p>Hast du das <strong>#endif</strong> nur vergesen zu kopieren oder fehlt das tatsächlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/585974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/585974</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Thu, 19 Aug 2004 06:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 09:19:09 GMT]]></title><description><![CDATA[<p>Mach doch mal eine Forward-Deklaration der Klasse user in Interface.h. Vielleicht hast Du irgendwelche gegenseitigen includes.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586106</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Thu, 19 Aug 2004 09:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 09:19:14 GMT]]></title><description><![CDATA[<p>Wenn das fehlen würde hätte der Compiler sich schon beschwert.</p>
<p>Ansonsten: das Problem ist nicht nachvollziehbar, prinzipiell sieht alles richtig aus.<br />
Ggf. solltest du mal die include-Reihenfolge variieren, also die user.h weiter nach oben stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586107</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 19 Aug 2004 09:19:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 13:37:08 GMT]]></title><description><![CDATA[<p>Hmm includereinfolge &quot;könnte&quot; es sein. was ist ein Forward include ? gibt es bestimmte compilerderiktiven die ich verwenden kann ?</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586383</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Thu, 19 Aug 2004 13:37:08 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 13:53:40 GMT]]></title><description><![CDATA[<p>Probier's doch mal mit einer Forward-<strong>Deklaration</strong>:</p>
<p>maYer schrieb:</p>
<blockquote>
<p>Form Interface</p>
<pre><code class="language-cpp">#ifndef InterfaceH
#define InterfaceH
//---------------------------------------------------------------------------
//...jede Menge includes
#include &quot;user.h&quot;

// Forward-Deklaration
class user;
//---------------------------------------------------------------------------
class TInterface : public TForm
{
  // alles wie gehabt
};
</code></pre>
</blockquote>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586409</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Thu, 19 Aug 2004 13:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 15:00:39 GMT]]></title><description><![CDATA[<p>Alles klar, aber was soll das bringen ( Prgrammiertechnisch ).<br />
Das die Klasse im Namespace vorhanden ist ?</p>
<p>nur zur info...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586479</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Thu, 19 Aug 2004 15:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 15:48:43 GMT]]></title><description><![CDATA[<p>maYer schrieb:</p>
<blockquote>
<p>Alles klar, aber was soll das bringen ( Prgrammiertechnisch ).</p>
</blockquote>
<p>Soweit ich das verstehe, teilst Du damit dem Compiler mit: &quot;Diese Klasse gibt es und Du hast das zu schlucken.&quot;<br />
Wenn Du die Klasse dann irgendwo verwendest, muss sie aber dann wirklich vorhanden sein. Im Klartext:<br />
Es ist OK eine Forward-Deklaration im Header zu machen, solange Du in der zugehörigen *.cpp einen include<br />
auf die Header-Datei hast, in der die Klasse tatsächlich definiert (oder deklariert?) wird.<br />
Wenn Du gegenseitige includes hast, dann sorgt das #ifndef dafür, dass in ungünstigen Konstellationen die<br />
Klassendefinition &quot;ausgeblendet&quot; wird. Das sieht dann für den Compiler so aus, als existiere die Klasse gar nicht.</p>
<p>Hast Du's eigentlich mal ausprobiert?</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586531</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Thu, 19 Aug 2004 15:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 18:24:21 GMT]]></title><description><![CDATA[<p>Also alex dein Trick hilft wirklich.<br />
Man kann das class aber auch vor die deklaration selber setzten.</p>
<p>class user *myuser;</p>
<p>Das wäre geschafft.<br />
Nur hab ich nicht verstanden, warum das ganze bzw. was es zu bedeuten hat und das ist mir fast wichtig.</p>
<p>wieso muss ich user explizit als class definieren, wenn sie doch schon so deklariert wurde ? ( würde gerne wissen, ob die beiden Verben nun gepasst haben [deklarieren /Definieren])</p>
<p>Wäre super wenn das jemand enschlüsseln könnte, in den Büchern hab ich nichts darüber gefunden.</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586654</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Thu, 19 Aug 2004 18:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 22:58:02 GMT]]></title><description><![CDATA[<p>maYer schrieb:</p>
<blockquote>
<p>wieso muss ich user explizit als class definieren, wenn sie doch schon so deklariert wurde ?</p>
</blockquote>
<p>Wie schon erwähnt liegt das an dem #ifndef.<br />
Ich stelle mir das so vor: Der Compiler kommt auf seinem Weg bei Deiner user.h an, um sie zu kompilieren. Dabei wird<br />
dann UserH definiert und er findet ein include von Deiner Interface.h (vielleicht auch in einem anderen Header, der<br />
an der Stelle eingebunden wird). Also versucht der Compiler jetzt erstmal die Interface.h zu kompilieren. In der<br />
Interface.h ist aber ein include von user.h. Also schaut er wieder in user.h. Da UserH jetzt aber definiert ist,<br />
bricht der Compiler hier ab (bzw. findet quasi &quot;nichts&quot;, weil durch ifndef ausgeblendet). Bemerkenswert dabei ist,<br />
dass der Compiler bisher noch nicht zu Deiner Klasse user vorgedrungen ist. Beim weiteren Kompilieren von Interface.h<br />
kennt er deshalb user nicht und bricht mit einem Fehler ab.<br />
Durch die Forward-Deklaration teilst Du dem Compiler mit, dass user eine Klasse ist, was dem Compiler an der Stelle<br />
genügt, da ja nur eine Variable deklariert wird, aber keine Methode der Klasse aufgerufen wird. Die Klasse wird<br />
im Header ja gar nicht &quot;verwendet&quot;; das passiert erst in der *.cpp. Dort muss dann auf jeden Fall ein include der<br />
user.h enthalten sein, sonst gibt es einen Fehler in der Art &quot;tritratrulala() ist keine Methode von user, weil der Typ<br />
nicht definiert ist&quot;.<br />
Anders sieht die Sache aus, wenn Du einen Header hast, in dem eine Klasse definiert wird, die von user erbt. Dann<br />
begnügt sich der Compiler nicht mit einer Forward-Deklaration. Ist ja auch klar, denn er muß ja die geerbten Methoden<br />
und Klassenvariablen kennen, um einen &quot;Bauplan&quot; für die erbende Klasse erstellen zu können.</p>
<p>Ich hoffe, das ist so einigermaßen richtig und konnte etwas zum Verständis beitragen.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586818</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Thu, 19 Aug 2004 22:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Klasse in Form deklarieren .. geht nicht on Thu, 19 Aug 2004 23:47:24 GMT]]></title><description><![CDATA[<p>Doch ich denke ich kann dir folgen.<br />
Du brauchst dich nicht wundern warum er nciht bis dahin vorgedrungen ist, das sit ein recht großes projekt, mit beinahe 45 include files.</p>
<p>Danke dir für die Zeit, die du dir genommen hast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/586828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/586828</guid><dc:creator><![CDATA[maYer]]></dc:creator><pubDate>Thu, 19 Aug 2004 23:47:24 GMT</pubDate></item></channel></rss>