<?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[Probleme mit Gültigkeitsbereich von Variablen in Klassen]]></title><description><![CDATA[<p>Hy,</p>
<p>ich hab eine Klasse, welche unter anderem das Attribut timerID hat. Fuer dieses Attribut bestehen Setter und Getter.<br />
Eine Bestimmte Methode (startet fuehrt u.a. folgenden Code aus:</p>
<pre><code class="language-cpp">setTimerID( SetTimer(NULL ,1,1000, (TIMERPROC)OnTimer));
</code></pre>
<p>Die Entsprechende Funktion sieht so aus:</p>
<pre><code class="language-cpp">void CALLBACK OnTimer(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD d){
	static int a = 0;
	a++;

	if (idEvent == getTimerID()) {
		ShowMessage(IntToStr(a));
	}
}
</code></pre>
<p>Die obige Funktion steht in der cpp der Klasse.<br />
Ich bekomme nun (logischerweise) den folgendne Fehler:<br />
*<br />
[C++ Fehler] TMy_win.cpp(11): E2268 Aufruf der undefinierten Funktion 'getTimerID'*</p>
<p>Mir ist klar, dar die Funktion ja nicht zur Klasse gehoert, er die Methode getTimerID auch nicht findet.<br />
Doch wie kann ich darauf zugreifen, oder das Problem umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208881/probleme-mit-gültigkeitsbereich-von-variablen-in-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 09:27:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208881.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Mar 2008 22:05:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Gültigkeitsbereich von Variablen in Klassen on Sun, 23 Mar 2008 22:05:57 GMT]]></title><description><![CDATA[<p>Hy,</p>
<p>ich hab eine Klasse, welche unter anderem das Attribut timerID hat. Fuer dieses Attribut bestehen Setter und Getter.<br />
Eine Bestimmte Methode (startet fuehrt u.a. folgenden Code aus:</p>
<pre><code class="language-cpp">setTimerID( SetTimer(NULL ,1,1000, (TIMERPROC)OnTimer));
</code></pre>
<p>Die Entsprechende Funktion sieht so aus:</p>
<pre><code class="language-cpp">void CALLBACK OnTimer(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD d){
	static int a = 0;
	a++;

	if (idEvent == getTimerID()) {
		ShowMessage(IntToStr(a));
	}
}
</code></pre>
<p>Die obige Funktion steht in der cpp der Klasse.<br />
Ich bekomme nun (logischerweise) den folgendne Fehler:<br />
*<br />
[C++ Fehler] TMy_win.cpp(11): E2268 Aufruf der undefinierten Funktion 'getTimerID'*</p>
<p>Mir ist klar, dar die Funktion ja nicht zur Klasse gehoert, er die Methode getTimerID auch nicht findet.<br />
Doch wie kann ich darauf zugreifen, oder das Problem umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479367</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Sun, 23 Mar 2008 22:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Gültigkeitsbereich von Variablen in Klassen on Mon, 24 Mar 2008 11:14:45 GMT]]></title><description><![CDATA[<p>Da du hier im VCL-Forum bist, warum verwendest du denn nicht die Komponente TTimer?</p>
<p>Bei deinem Code müßtest du entweder auch die GetTimerId-Methode als statisch deklarieren oder aber wiederum eine statische globale Variable deklarieren, in der du die Klasseninstanz speicherst.</p>
<p>Also nimm besser die TTimer-Komponente...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479491</guid><dc:creator><![CDATA[~Timer]]></dc:creator><pubDate>Mon, 24 Mar 2008 11:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Gültigkeitsbereich von Variablen in Klassen on Mon, 24 Mar 2008 12:01:01 GMT]]></title><description><![CDATA[<p>Ich verwende nicht den TTimer weil ich dafuer wieder soweit mein Verstaendnis ist eine Form brauche. Hab aber die Klasse in einer separaten Datei und möchte dies sauber lösen und nicht wegen des Timers auf ein Form-Objekt zurückgreifen (habe es so auch noch nicht hinbekommen).</p>
<p>Ich hab die GetTimerID als static deklariert, danach musste ich auch das Attribut timerID als static kompilieren. Jetzt bekomme ich den Fehler:</p>
<p><em>[Linker Fehler] Error: Ungelöste externe 'TMy_win::timerID' referenziert von C:\...\TMY_CLASS.OBJ</em></p>
<p>Auch glaub ich dass es sich so nicht lösen lässt oder? ICh brauche ja das Attribut eines bestimmten Objekts der Klasse, also z.b. obj1.getTimerID(), was aber durch static dann nicht mehr gewährleistet ist.<br />
Für einen kurzen Code-Hint wäre ich dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479525</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Mon, 24 Mar 2008 12:01:01 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Gültigkeitsbereich von Variablen in Klassen on Mon, 24 Mar 2008 12:29:54 GMT]]></title><description><![CDATA[<p>Nein, für die TTimer-Komponente brauchst du nicht extra eine Form.</p>
<p>Einfach ein Objekt in deiner Klasse definieren:</p>
<pre><code class="language-cpp">class MyClass
{

...

private:

TTimer * timer;

...

public:

void __fastcall onTimer(TObject *Sender);

...
};

MyClass:MyClass()
{
...
timer = new TTimer( 0 );

timer-&gt;Enabled = false;
timer-&gt;OnTimer = onTimer;

...
}

void __fastcall MyClass::onTimer(TObject *Sender)
{
 // whatever
}

...
// nicht vergessen wieder aufzuräumen

MyClass:~MyClass()
{
...
delete timer;
...
}
</code></pre>
<p>Und zum einsetzten des Timers einfach folgendes machen:</p>
<pre><code class="language-cpp">timer-&gt;Interval = 5000; // whatever
timer-&gt;Enabled = true;
</code></pre>
<p>hf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479534</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Mon, 24 Mar 2008 12:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Gültigkeitsbereich von Variablen in Klassen on Mon, 24 Mar 2008 12:57:43 GMT]]></title><description><![CDATA[<p>Das funktioniert wunderbar, danke.</p>
<p>Rein aus Interesse, wie hätte ich das mit meinem Ansatz (SetTimer und timerID als Attribut) lösten können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1479552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1479552</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Mon, 24 Mar 2008 12:57:43 GMT</pubDate></item></channel></rss>