<?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[Methode aus einer anderen Klasse abrufen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einer Klasse ein Methode definiert,</p>
<pre><code class="language-cpp">class CTest : public CWnd
.....
public:
    Void CTest::Funktion()
</code></pre>
<p>...aber, wie kann ich diese Methode in meiner View-Klasse abrufen?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176310/methode-aus-einer-anderen-klasse-abrufen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 10:19:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176310.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Mar 2007 20:52:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Mon, 19 Mar 2007 20:52:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einer Klasse ein Methode definiert,</p>
<pre><code class="language-cpp">class CTest : public CWnd
.....
public:
    Void CTest::Funktion()
</code></pre>
<p>...aber, wie kann ich diese Methode in meiner View-Klasse abrufen?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248772</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Mon, 19 Mar 2007 20:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Mon, 19 Mar 2007 21:10:32 GMT]]></title><description><![CDATA[<p>Hmm kommt darauf an, in wie weit die Klasse View einen Pointer auf das Objekt odg. hat ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248788</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 19 Mar 2007 21:10:32 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Mon, 19 Mar 2007 21:28:31 GMT]]></title><description><![CDATA[<p>Ne, die Klasse &quot;MeinView&quot; hat keinen Pointer auf das Objekt... wie mache ich das?<br />
Die Methode wollte ich nicht direkt in der Klasse &quot;MeinView&quot; schreiben, da der Code ein bißchen lang ist.<br />
Dann habe ich ein neue Klasse erstellt, wo ich die Methode reingeschrieben habe.<br />
Die beiden Klassen kennen sich nur per der Header-Datei</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248802</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Mon, 19 Mar 2007 21:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Tue, 20 Mar 2007 07:56:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class CViewklasse{

CTest *p;

CViewklasse(){

p= new CTest();
}

~CViewklasse(){

delete p;
}

MethodeAusCTestAuruefne(){

p-&gt;Funktion();

}
.....

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1248903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248903</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 20 Mar 2007 07:56:21 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Tue, 20 Mar 2007 10:48:37 GMT]]></title><description><![CDATA[<p>Erweitere den Konstruktor Deines Dialoges um einen Pointer oder eine Referenz auf das Objekt:</p>
<pre><code>MyDialog dlg(obj);
dlg.DoModal();
</code></pre>
<p>oder schreibe dafür einen Setter in Deine Dialogklasse:</p>
<pre><code>MyDialog dlg;
dlg-&gt;SetObj(obj);
dlg.DoModal();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1248994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248994</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Tue, 20 Mar 2007 10:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 08:17:57 GMT]]></title><description><![CDATA[<p>Danke erstmal für euere Antworten.<br />
@ Jencas: es handelt sich um eine SDI-Anwedung (FormView) und nicht um ein Dialog <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
@ BorisDieKlinge: Beim Kompilieren wird keinen Fehler angezeigt, aber das Programm stürtzt genau an der Stelle ab, wo ich den Befehl mit der angesprochenen Methode ausführe.<br />
Liegt das vielleicht an der Basisklasse der neuen Klasse?</p>
<p>Gruß, Anny</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249567</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Wed, 21 Mar 2007 08:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 08:24:45 GMT]]></title><description><![CDATA[<p>Mit was für einer Meldung stürzt das Programm denn ab?</p>
<p>Anny schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich habe in einer Klasse ein Methode definiert,</p>
<pre><code class="language-cpp">class CTest : public CWnd{...};
</code></pre>
</blockquote>
<p>Da deine Klasse von CWnd abgeleitet ist, hast du vermutlich in der Funktion auf das (nicht vorhandene) Fenster zugegriffen - die meisten CWnd-Methoden funktionieren erst, wenn das Objekt (per Create() oder Attach()) mit einem Fanster-Handle gekoppelt wurde.<br />
(btw, ist das überhaupt nötig? sprich: Was für eine Aufgabe hat deine CTest-Klasse?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249570</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Mar 2007 08:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 08:58:02 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung schaut so aus:</p>
<pre><code class="language-cpp">Unbehandelte Ausnahme bei 0x7824ad5c (mfc80d.dll) in MeinProgramm.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000020.
</code></pre>
<p>In der Aufrufliste steht in der ersten Zeile folgende Meldung</p>
<pre><code class="language-cpp">&gt;mfc80d.dll!CWnd::GetDlgItemTextA(int nID=1001, ATL::CStringT&lt;char,StrTraitMFC_DLL&lt;char,ATL::ChTraitsCRT&lt;char&gt; &gt; &gt; &amp; rString=&quot;&quot;)  Zeile 1124 + 0x3 Bytes	C++
</code></pre>
<p>und verweist mit einem gelben Pfeil auf (ASSERT(::IsWindow(m_hWnd)); ) :</p>
<pre><code class="language-cpp">int CWnd::GetDlgItemText(int nID, CString&amp; rString) const
{
	ASSERT(::IsWindow(m_hWnd));
	rString = _T(&quot;&quot;);    // empty without deallocating
</code></pre>
<p>in wincore.cpp</p>
<p>In der Methode aus der Klasse CTest ist ein Befehl über die serielle Schnittstelle definiert.<br />
Ohne Methode funktioniert der Befehl in MeinView ohne Probleme, aber wegen der Übersichtlichkeit möchte ich halt den Befehl über die angesprochne Methode der Klasse CTest ausführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249589</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Wed, 21 Mar 2007 08:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 09:10:55 GMT]]></title><description><![CDATA[<p>Genau was ich vermutet habe - dein CWnd (bzw. CTest)-Objekt benötigt ein eigenes Fenster(-Handle), auf das die Methoden der CWnd-Klasse zugreifen wollen. Da du dieses Fenster nirgends angelegt hast, läuft dieser Aufruf in's Leere.</p>
<p>Aber wie es aussieht, willst du nichtmal ein eigenes Fenster verwenden, sondern auf das Fenster des FormView zugreifen. Dazu benötigst du keine Ableitung von CWnd, sondern ein Member, der auf das &quot;eigene&quot; View verweist:</p>
<pre><code class="language-cpp">class CViewKlasse;

class CTest
{
  CViewKlasse* m_parent;
public:
  CTest(CViewKlasse* parent) : m_parent(parent) {}
  void Funktion();
};

class CViewKlasse : public CFormView
{
  CTest* m_test;
public:
  CViewKlasse()
  : CFormView(ID_VIEW)
  {
    m_test = new CTest(this);
  }

  ~CViewKlasse()
  { delete m_test; }

  OnButton1()
  {
    m_test-&gt;Funktion();
  }
};

void CTest::Funktion()
{
  CString input;
  m_parent-&gt;GetDlgItemText(IDC_ADRESS,input);
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1249596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249596</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Mar 2007 09:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 11:19:28 GMT]]></title><description><![CDATA[<p>Hallo CStoll,</p>
<p>ich habe Dein Code folgende Maßen eingefügt:</p>
<pre><code class="language-cpp">class CViewKlasse;   // wo gehört das hin ?

//------------------------------------------------------------------------------
// CTest.h
class CTest        
{
  CViewKlasse* m_parent;
public:
  CTest(CViewKlasse* parent) : m_parent(parent) {};
  void Funktion();
};

//------------------------------------------------------------------------------
// CTest.cpp
void CTest::Funktion()
{
  CString input;
  m_parent-&gt;GetDlgItemText(IDC_ADRESS,input);
  ...
}

//------------------------------------------------------------------------------
//  CViewKlasse.h
class CViewKlasse : public CFormView
{ ...
  public:
  CTest* m_test;
  ...
};
 //-----------------------------------------------------------------------------
 // CViewKlasse.cpp
CViewKlasse::CViewKlasse()
  : CFormView(CViewKlasse::IDD) 
  {
    m_test = new CTest(this);    
  }

  CViewKlasse::~CViewKlasse()
  { 
    delete m_test; 
  }             

.
.

  OnButton1()
  {
    m_test-&gt;Funktion();
  }
</code></pre>
<p>Fehlermeldung beokomme ich in der Zeile 28 (CTest* m_test;) :</p>
<pre><code>error C2143: Syntaxfehler: Es fehlt ';' vor '*'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
</code></pre>
<p>in der ViewKlasse.h</p>
<pre><code class="language-cpp">public:
	enum { IDD = IDD_FORMVIEW };
</code></pre>
<p>bekomme ich folgenden Fehler:</p>
<pre><code>error C2065: 'IDD_FORMVIEW': nichtdeklarierter Bezeichner
</code></pre>
<p>Ausserdem bekomme ich lauter fehlern, die auf die MessageBoxA beziehen:</p>
<pre><code>error C2660: 'MessageBoxA': Funktion akzeptiert keine 3 Argumente
</code></pre>
<p>oder zum Beispiel:</p>
<pre><code>'SetDlgItemTextA': Funktion akzeptiert keine 2 Argumente
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1249681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249681</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Wed, 21 Mar 2007 11:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 12:03:48 GMT]]></title><description><![CDATA[<p>Anny schrieb:</p>
<blockquote>
<p>Hallo CStoll,</p>
<p>ich habe Dein Code folgende Maßen eingefügt:</p>
<pre><code class="language-cpp">class CViewKlasse;   // wo gehört das hin ?
</code></pre>
</blockquote>
<p>Das gehört an den Anfang der &quot;CTest.h&quot; Datei (sagt dir &quot;Forward Deklaration&quot; etwas?)</p>
<blockquote>
<p>Fehlermeldung beokomme ich in der Zeile 28 (CTest* m_test;) :</p>
<pre><code>error C2143: Syntaxfehler: Es fehlt ';' vor '*'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.
</code></pre>
</blockquote>
<p>Da brauchst du entweder eine Forward-Deklaration oder ein #include &quot;CTest.h&quot;, damit der Compiler die Klasse wiedererkennen kann.</p>
<blockquote>
<p>in der ViewKlasse.h</p>
<pre><code class="language-cpp">public:
	enum { IDD = IDD_FORMVIEW };
</code></pre>
<p>bekomme ich folgenden Fehler:</p>
<pre><code>error C2065: 'IDD_FORMVIEW': nichtdeklarierter Bezeichner
</code></pre>
</blockquote>
<p>Ja, wo ist er denn? Die ID deines Dialogs sollte schon mit dem übereinstimmen, was du im Ressourcen-Editor festgelegt hast.</p>
<blockquote>
<p>Ausserdem bekomme ich lauter fehlern, die auf die MessageBoxA beziehen:</p>
<pre><code>error C2660: 'MessageBoxA': Funktion akzeptiert keine 3 Argumente
</code></pre>
<p>oder zum Beispiel:</p>
<pre><code>'SetDlgItemTextA': Funktion akzeptiert keine 2 Argumente
</code></pre>
</blockquote>
<p>Ja, wenn du die globalen Funktionen aufrufen willst, erwarten die jeweils einen zusätzlichen Parameter (das Fenster-Handle, auf das sie angewendet werden sollen). Du mußt vor alle diese Aufrufe ein <code>m_parent-&gt;</code> schreiben, um den Bezug zu deinem View-Fenster herzustellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249721</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Mar 2007 12:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 12:45:20 GMT]]></title><description><![CDATA[<p>Danke CSoll für Deinen Geduld.<br />
&quot;CTest.h&quot; wurde schon in der ViewKlasse inkludiert, aber der Fehler taucht immer auf.<br />
Jetzt habe ich die CTest-Klasse direkt in der ViewKlasse.h einfügt und sieh da, der Fehler ist weg.</p>
<p>alle anderen Fehler mit der MessageBox sind auch weg.</p>
<p>Es bleibt nur noch den Fehler mit der ID des Views.<br />
In der Resource-Datei ist alle korrekt definiert:</p>
<pre><code class="language-cpp">#define IDD_FORMVIEW             103
</code></pre>
<p>Bis jetzt (ohne der neuen Klasse) hatte ich keine Probleme mit der ID des Views gehabt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249752</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Wed, 21 Mar 2007 12:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 12:54:26 GMT]]></title><description><![CDATA[<p>Dann hast du vermutlich vergessen, die &quot;resource.h&quot; in dein Programm einzubinden (afaik sollte MSVC das eingetragen haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    />).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249757</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 21 Mar 2007 12:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Wed, 21 Mar 2007 13:40:54 GMT]]></title><description><![CDATA[<p>Die resource.h wurde eigentlich schon im Programm eingebunden, nämlich in der ProgrammName.h<br />
Ich habe jetzt die resource.h auch in der ViewKlasse.h eingebunden und es läuft ...<br />
komisch, dass die resource.h zweimal eingebunden werden soll.</p>
<p>Vielen vielen Dank, Du hast mich sehr geholfen und habe dazu was wichtiges gelernt <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="👍"
    /></p>
<p>Viele Grüsse, Anny</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1249798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1249798</guid><dc:creator><![CDATA[Anny]]></dc:creator><pubDate>Wed, 21 Mar 2007 13:40:54 GMT</pubDate></item><item><title><![CDATA[Reply to Methode aus einer anderen Klasse abrufen on Thu, 22 Mar 2007 07:29:30 GMT]]></title><description><![CDATA[<p>Anny schrieb:</p>
<blockquote>
<p>Die resource.h wurde eigentlich schon im Programm eingebunden, nämlich in der ProgrammName.h<br />
Ich habe jetzt die resource.h auch in der ViewKlasse.h eingebunden und es läuft ...</p>
</blockquote>
<p>Und bindet die &quot;ViewKlasse.h&quot; auch die &quot;ProgrammName.h&quot; ein? (ich weiß, die gegenseitigen #include-Beziehungen können manchmal haarig sein ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1250211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1250211</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Mar 2007 07:29:30 GMT</pubDate></item></channel></rss>