<?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[Ich kann Klasse nicht Nutzen, error C2146, C4430]]></title><description><![CDATA[<p>Wenn ich in der Klasse von einem Dialog folgendes schreibe</p>
<pre><code>#include &quot;ThzMeasurement.h&quot;
...
class CTHzMessungDlg : public CDialog
{
...
public:
ThzMeasurement Measurement;
}
</code></pre>
<p>mit ThzMeasurement.j</p>
<pre><code>class ThzMeasurement
{
...
</code></pre>
<p>dann erhalte ich folgende Fehler:</p>
<blockquote>
<p>1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Measurement'<br />
1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.<br />
1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.</p>
</blockquote>
<p>So als wenn die Klasse 'ThzMeasurement' nicht bekannt wäre, was aber eigentlich nicht sein kann. Wenn ich die Zeile herausnehme kompiliert das Projekt wieder.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190495/ich-kann-klasse-nicht-nutzen-error-c2146-c4430</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 10:46:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190495.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Aug 2007 12:39:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 12:39:43 GMT]]></title><description><![CDATA[<p>Wenn ich in der Klasse von einem Dialog folgendes schreibe</p>
<pre><code>#include &quot;ThzMeasurement.h&quot;
...
class CTHzMessungDlg : public CDialog
{
...
public:
ThzMeasurement Measurement;
}
</code></pre>
<p>mit ThzMeasurement.j</p>
<pre><code>class ThzMeasurement
{
...
</code></pre>
<p>dann erhalte ich folgende Fehler:</p>
<blockquote>
<p>1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Measurement'<br />
1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.<br />
1&gt;z:\cpp\thz\thzmessung\thzmessung\thzmessungdlg.h(55) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.</p>
</blockquote>
<p>So als wenn die Klasse 'ThzMeasurement' nicht bekannt wäre, was aber eigentlich nicht sein kann. Wenn ich die Zeile herausnehme kompiliert das Projekt wieder.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350446</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 23 Aug 2007 12:39:43 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 12:41:58 GMT]]></title><description><![CDATA[<p>Hast du eventuell in der ThzMeasurement.h den Dialog-Header eingebunden? Solche Fehler deuten meist darauf hin, daß der Preprozessor die Deklarationen in eine andere Reihenfolge gebracht hat als du das erwartest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350449</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Aug 2007 12:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 13:11:24 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Hast du eventuell in der ThzMeasurement.h den Dialog-Header eingebunden? Solche Fehler deuten meist darauf hin, daß der Preprozessor die Deklarationen in eine andere Reihenfolge gebracht hat als du das erwartest.</p>
</blockquote>
<p>Nicht direkt, aber ich benötige die Datei die theApp definiert:</p>
<p>#include &quot;THzMessung.h&quot;</p>
<p>in der selbst die Dialoge geladen werden:</p>
<p>#include &quot;THzMessungDlg.h&quot;</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350477</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 23 Aug 2007 13:11:24 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 14:21:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Da fehlt ein ; nach dem Ende der Klasse.</p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350546</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 23 Aug 2007 14:21:49 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 14:36:14 GMT]]></title><description><![CDATA[<p>chrische5 schrieb:</p>
<blockquote>
<p>Hallo</p>
<p>Da fehlt ein ; nach dem Ende der Klasse.</p>
<p>chrische</p>
</blockquote>
<p>Nein das ist es nicht, denn ohne die Zeile funktioniert es ja.</p>
<p>Der Hinweis von CStoll, dass ich rekursiv header lade und diese damit in undefinierter Reihenfolge geladen werden ist vermutlich der Grund.<br />
Nachdem ich die Rekursion aufgelöst habe (und dabei einiges umschreiben musste) geht es wieder.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350555</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 23 Aug 2007 14:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 15:07:20 GMT]]></title><description><![CDATA[<p>Doch, da fehlt eins. Und genauso am Ende der Klasse ThzMeasurement.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350585</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Thu, 23 Aug 2007 15:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 15:43:47 GMT]]></title><description><![CDATA[<p>dEUs schrieb:</p>
<blockquote>
<p>Doch, da fehlt eins. Und genauso am Ende der Klasse ThzMeasurement.</p>
</blockquote>
<p>Ich streite mich ungerne um semikolons...</p>
<pre><code>#pragma once

// Geräte
#include &quot;MicosPosCtrl.h&quot;
// Einstellungen
#include &quot;MicosSettings.h&quot;

	struct structSettings 
	{
		MicosSettings micos;
	};

class ThzMeasurement
{
private:

public:
	ThzMeasurement(MicosPosCtrl* newVerschiebetisch, structSettings* newSettings);
	~ThzMeasurement(void);

private:
	int m_Status;
	MicosPosCtrl* Verschiebetisch;
	structSettings* Settings;

public:
	int GetStatus(){ return m_Status; }
	void SetStatus(int value) { m_Status = value; }
	void Start();
	void Stop();
	void Continue();
	void DoMeasurement();

};
</code></pre>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350606</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Thu, 23 Aug 2007 15:43:47 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Thu, 23 Aug 2007 17:01:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>In deinem Beispiel hat aber trotzdem ein ; gefehlt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>chrische</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1350639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1350639</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 23 Aug 2007 17:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Ich kann Klasse nicht Nutzen, error C2146, C4430 on Mon, 27 Aug 2007 15:45:01 GMT]]></title><description><![CDATA[<p>Ich bekomme das Problem noch immer nicht in den Griff:</p>
<p>Ich definiere in THzMessung.h</p>
<pre><code class="language-cpp">GPIB_SRSRFLockIn LockInRF;         
GPIB_SRSLockIn LockInLF;         
structSettings Settings;
MicosPosCtrl* Verschiebetisch;
ThzMeasurement*  Messung;
</code></pre>
<p>außerhalb der Klasse. Die Werte Settings, Verschiebetisch, Messung brauche ich sowieso in fast allen Dialogen weshalb sie global Sinn machen.</p>
<p>Dazu lade ich in den Dialogen jedesmal</p>
<pre><code class="language-cpp">#include &quot;THzMessung.h&quot;
</code></pre>
<p>damit diese Werte bekannt sind.</p>
<p>Wenn ich hingegen in der Klasse von ThzMeasurement die THzMessung.h Datei lade dann tritt der oben beschrieben Fehler auf.</p>
<p>Also habe ich das umgeschrieben zu</p>
<p>ThzMeasurement.h</p>
<pre><code class="language-cpp">class ThzMeasurement
{
private:

public:
	ThzMeasurement(MicosPosCtrl* newVerschiebetisch, structSettings &amp; newSettings, GPIB_SRSRFLockIn &amp; newLockInRF);
	ThzMeasurement(MicosPosCtrl* newVerschiebetisch, structSettings &amp; newSettings, GPIB_SRSLockIn &amp; newLockInLF);
	~ThzMeasurement(void);

private:
	int m_Status;

	GPIB_SRSRFLockIn LockInRF;         
	GPIB_SRSLockIn LockInLF;         
	structSettings Settings;
	MicosPosCtrl* Verschiebetisch;	

...
</code></pre>
<pre><code class="language-cpp">#include &quot;ThzMeasurement.h&quot;

ThzMeasurement::ThzMeasurement(MicosPosCtrl* newVerschiebetisch, structSettings &amp; newSettings, GPIB_SRSRFLockIn &amp; newLockInRF)
{
	Verschiebetisch = newVerschiebetisch;
	Settings = newSettings;
	LockInRF = newLockInRF;
}
ThzMeasurement::ThzMeasurement(MicosPosCtrl* newVerschiebetisch, structSettings &amp; newSettings, GPIB_SRSLockIn &amp; newLockInLF)
{
	Verschiebetisch = newVerschiebetisch;
	Settings = newSettings;
	LockInLF = newLockInLF;
}
</code></pre>
<p>so dass die THzMessung.h dort nicht mehr geladen werden muss: Das kompiliert auch. Allerdings bekomme ich jetzt diese Fehler beim Linken:</p>
<blockquote>
<p>1&gt;DlgMicosConfig.obj : error LNK2005: &quot;class MicosPosCtrl * Verschiebetisch&quot; (?Verschiebetisch@@3PAVMicosPosCtrl@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosConfig.obj : error LNK2005: &quot;class ThzMeasurement * Messung&quot; (?Messung@@3PAVThzMeasurement@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosConfig.obj : error LNK2005: &quot;struct structSettings Settings&quot; (?Settings@@3UstructSettings@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosConfig.obj : error LNK2005: &quot;class GPIB_SRSLockIn LockInLF&quot; (?LockInLF@@3VGPIB_SRSLockIn@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosConfig.obj : error LNK2005: &quot;class GPIB_SRSRFLockIn LockInRF&quot; (?LockInRF@@3VGPIB_SRSRFLockIn@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosMoves.obj : error LNK2005: &quot;class MicosPosCtrl * Verschiebetisch&quot; (?Verschiebetisch@@3PAVMicosPosCtrl@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosMoves.obj : error LNK2005: &quot;class ThzMeasurement * Messung&quot; (?Messung@@3PAVThzMeasurement@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosMoves.obj : error LNK2005: &quot;struct structSettings Settings&quot; (?Settings@@3UstructSettings@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosMoves.obj : error LNK2005: &quot;class GPIB_SRSLockIn LockInLF&quot; (?LockInLF@@3VGPIB_SRSLockIn@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;DlgMicosMoves.obj : error LNK2005: &quot;class GPIB_SRSRFLockIn LockInRF&quot; (?LockInRF@@3VGPIB_SRSRFLockIn@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;THzMessungDlg.obj : error LNK2005: &quot;class MicosPosCtrl * Verschiebetisch&quot; (?Verschiebetisch@@3PAVMicosPosCtrl@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;THzMessungDlg.obj : error LNK2005: &quot;class ThzMeasurement * Messung&quot; (?Messung@@3PAVThzMeasurement@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;THzMessungDlg.obj : error LNK2005: &quot;struct structSettings Settings&quot; (?Settings@@3UstructSettings@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;THzMessungDlg.obj : error LNK2005: &quot;class GPIB_SRSLockIn LockInLF&quot; (?LockInLF@@3VGPIB_SRSLockIn@@A) ist bereits in DlgLockinConfig.obj definiert.<br />
1&gt;THzMessungDlg.obj : error LNK2005: &quot;class GPIB_SRSRFLockIn LockInRF&quot; (?LockInRF@@3VGPIB_SRSRFLockIn@@A) ist bereits in DlgLockinConfig.obj definiert</p>
</blockquote>
<p>Jetzt bin ich ratlos wie ich weitermachen soll.</p>
<p>Den ganzen Code zur Auswertung in ThzMessung.h packen ? Dann wären Daten, Agorithmen und Oberfläche aber alles in einer Datei, dass will ich ja gerade verhindern.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353146</guid><dc:creator><![CDATA[pospiech]]></dc:creator><pubDate>Mon, 27 Aug 2007 15:45:01 GMT</pubDate></item></channel></rss>