<?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[Funktionspointer auf Getter-Funktion einer Property - Geht sowas?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also ich habe folgendes Szenario:<br />
Ich habe ein und denselber Algorithmus, der eine Liste durchläuft, für jeden Listen-Eintrag ein Objekt der Klasse A erstellt und von all diesen Objekten die Property X (Typ int) abzurufen und aufzuaddieren. Meine Idee war jetzt mit so etwas wie Funktionszeigern auf Memberfunktionen zu arbeiten, da ich ja weiss, dass jede GetterFunktion die Signatur int X::Bla(void) hat. Leider klappt das bisher nicht wirklich... Also hier auf jeden Fall mal mein bisheriger Code:</p>
<p>.h</p>
<pre><code>typedef int (A::*MyFunctionPtrType) (void);
...
int CallMyFunctionPtr(MyFunctionPtrType fPtr);
</code></pre>
<p>.cpp</p>
<pre><code>int MyClass::CallMyFunctionPtr(TPChannelFunctionPtr fPtr)
{
    A* a = new A();
    int result = (a-&gt;*fPtr)();
}

int MyClass::CallProperty1()
{
    return CallMyFunctionPtr(&amp;A::NameOfProperty1);
}

int MyClass::CallProperty2()
{
    return CallMyFunctionPtr(&amp;A::NameOfProperty2);
}
</code></pre>
<p>Hierbei schlägt allerdings schon das Kompilieren fehl... Der Versuch den ÜbergabeParameter von CallMyFunctionPtr hart auf MyFunctionPtrType zu casten endete leider darin, dass meine CPU auf 100% ging und sich das Programm verabschiedete ;O) Hat irgendjemand eine Idee, wie ich explizit auf die Getter-Funktion des Properties zugreifen kann, oder hat jemand eine bessere Idee das ganze zu implementieren?</p>
<p>Viele Grüße<br />
Der Christoph</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174611/funktionspointer-auf-getter-funktion-einer-property-geht-sowas</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 21:04:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174611.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Mar 2007 09:02:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 09:02:42 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also ich habe folgendes Szenario:<br />
Ich habe ein und denselber Algorithmus, der eine Liste durchläuft, für jeden Listen-Eintrag ein Objekt der Klasse A erstellt und von all diesen Objekten die Property X (Typ int) abzurufen und aufzuaddieren. Meine Idee war jetzt mit so etwas wie Funktionszeigern auf Memberfunktionen zu arbeiten, da ich ja weiss, dass jede GetterFunktion die Signatur int X::Bla(void) hat. Leider klappt das bisher nicht wirklich... Also hier auf jeden Fall mal mein bisheriger Code:</p>
<p>.h</p>
<pre><code>typedef int (A::*MyFunctionPtrType) (void);
...
int CallMyFunctionPtr(MyFunctionPtrType fPtr);
</code></pre>
<p>.cpp</p>
<pre><code>int MyClass::CallMyFunctionPtr(TPChannelFunctionPtr fPtr)
{
    A* a = new A();
    int result = (a-&gt;*fPtr)();
}

int MyClass::CallProperty1()
{
    return CallMyFunctionPtr(&amp;A::NameOfProperty1);
}

int MyClass::CallProperty2()
{
    return CallMyFunctionPtr(&amp;A::NameOfProperty2);
}
</code></pre>
<p>Hierbei schlägt allerdings schon das Kompilieren fehl... Der Versuch den ÜbergabeParameter von CallMyFunctionPtr hart auf MyFunctionPtrType zu casten endete leider darin, dass meine CPU auf 100% ging und sich das Programm verabschiedete ;O) Hat irgendjemand eine Idee, wie ich explizit auf die Getter-Funktion des Properties zugreifen kann, oder hat jemand eine bessere Idee das ganze zu implementieren?</p>
<p>Viele Grüße<br />
Der Christoph</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237240</guid><dc:creator><![CDATA[derchristoph82]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 09:15:03 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Meine Idee war jetzt mit so etwas wie Funktionszeigern auf Memberfunktionen zu arbeiten, da ich ja weiss, dass jede GetterFunktion die Signatur int X::Bla(void) hat</p>
</blockquote>
<p>Properties sind Borland-spezifisch, da kann man nicht von ausgehen das zu jeder Property wirklich eine Getter-Methode angelegt wird. Du müßtest schon selber eine (public) Gettermethode für die Membervariable erstellen. Diese kannst ja dann auch in der Property eintragen.<br />
Von dieser Methode kannst du dann auch den Methodenpointer bzw. desen Adresse bekommen. Aber Achtung : Das ist kein klassischer Funktionspointer, den Methodenpointer sind im Gegensatz zu statischen Funktionen immer noch zu einem konkreten Objekt zugehörig.</p>
<p>Allerdings stelle ich mir die Frage, was das ganze soll? Warum benutzt die die Property nicht einfach wie vorgesehen?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237245</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 09:24:03 GMT]]></title><description><![CDATA[<p>Hmm, ok, das hatte ich befürchtet... Leider gehört mir die Klasse nicht von der ich die Properties aufrufen will. Der Sinn dahinter ist, dass die Methode CallMyFunctionPtr in meinem Programm einen etwas komplizierteren Algorithmus implementiert, diesen Algorithmus will ich für verschiedene Properties der Klasse benutzen, ohne ihn für jedes Property, das mir einen int zurück gibt neu zu implementieren...</p>
<p>Viele Grüße<br />
Christoph</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237252</guid><dc:creator><![CDATA[derchristoph82]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 09:26:54 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Für sowas sind Properties nicht geeignet, hier wäre es besser einen Wrapper zu schreiben der die Properties in ein Array mapt, so das über die Werte der Eigenschaften iteriert werden kann.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237255</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 09:58:23 GMT]]></title><description><![CDATA[<p>Öhm - glaub das hab ich jetzt nicht ganz verstanden...</p>
<p>Meinst du zu jedem Objekt der Klasse A eine Wrapper, der in einem Array alle Eigenschaften auflistet also vom prinzip her sowas wie:</p>
<p>class MyAWrapper<br />
{<br />
public:<br />
A a;<br />
int[] myArray;<br />
}</p>
<p>und in diesem Array dann alle Property-Werte aufführen, so dass ich meinem Algorithmus dann einen MyAWrapper, und die Stelle des Array an dem die gesuchte Property liegt übergebe? Oder war das jetzt völlig daneben?</p>
<p>Viele Grüße<br />
Christoph</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237278</guid><dc:creator><![CDATA[derchristoph82]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:58:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 10:21:35 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du kannst entweder die Werte selber in so einen Array-Container packen.<br />
Oder, was mir vorschwebte, die Zugriffe auf die Properties selber kapseln. Minimalbeispiel :</p>
<pre><code class="language-cpp">class TOriginal
{
...
  __property int Zahl1 = {...};
  __property int Zahl2 = {...};
  __property int Zahl3 = {...};
};

class TWrapper
{
  public :
    TWrapper(const TOriginal* Original);
    const int ZahlCount = 3;
    int GetZahl(int Index)
  private :
    const TOriginal* m_Original;
};

TWrapper::TWrapper(const TOriginal* Original) : m_Original(Original)
{
}
int TWrapper::GetZahl(int Index)
{
  switch (Index)
  {
    case 0 : return m_Original-&gt;Zahl1;
    case 1 : return m_Original-&gt;Zahl2;
    case 2 : return m_Original-&gt;Zahl3;
    default : throw Exception(&quot;Index nicht vorhanden&quot;);
  }
}

// Benutzen :
TOriginal* Original = ...;
TWrapper Wrapper(Original);
for (int Lv = 0; Lv &lt; Wrapper.ZahlCount; ++Lv)
  Berechne(Wrapper.GetZahl(Lv));
</code></pre>
<p>Damit könnte man die Berechnung gut von der Wertequelle abkapseln, und sogar noch dynamische Anzahl von Werten berücksichtigen, wenn man entsprechend den Wrapper ausbaut.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237299</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 01 Mar 2007 10:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 11:26:36 GMT]]></title><description><![CDATA[<p>Ah ja ok,</p>
<p>das gefällt mir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Vielen Dank für die Hilfe und viele Grüße!</p>
<p>Christoph</p>
<p>P.S. Ich hasse diese Borland spezifischen Konstrukte - wieso kann man nicht einfach ne Setter und ne Getter Methode schreiben und gut ist - dann weiss wenigstens auch jeder, dass da tatsächlich ne Methode ausgeführt wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237352</guid><dc:creator><![CDATA[derchristoph82]]></dc:creator><pubDate>Thu, 01 Mar 2007 11:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 11:33:44 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>wieso kann man nicht einfach ne Setter und ne Getter Methode schreiben und gut ist - dann weiss wenigstens auch jeder, dass da tatsächlich ne Methode ausgeführt wird...</p>
</blockquote>
<p>Kann man ja. __property ist auch ja nur ein Überzug über (potentielle) Getter und Setter. Für ein möglichst flexibles Klassendesign sollte man also trotz __property immer noch mit public Getter und Setter einbauen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237356</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 01 Mar 2007 11:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Getter-Funktion einer Property - Geht sowas? on Thu, 01 Mar 2007 12:24:28 GMT]]></title><description><![CDATA[<p>derchristoph82 schrieb:</p>
<blockquote>
<p>P.S. Ich hasse diese Borland spezifischen Konstrukte - wieso kann man nicht einfach ne Setter und ne Getter Methode schreiben und gut ist - dann weiss wenigstens auch jeder, dass da tatsächlich ne Methode ausgeführt wird...</p>
</blockquote>
<p>Weil man die Objekte dann nicht so ohne weiteres persistent machen, aus einer .dfm-Datei initialisieren und z.B. im Objektinspektor Initialwerte zuweisen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237383</guid><dc:creator><![CDATA[audacia|off]]></dc:creator><pubDate>Thu, 01 Mar 2007 12:24:28 GMT</pubDate></item></channel></rss>