<?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[Funktionszeiger und Templates]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin gerade dabei, einen Wrapper für Detours zu schreiben, einer Hooking-Library von Microsoft.</p>
<p>Nunja, erste Frage, wenn ich jetzt soetwas bastle:</p>
<pre><code class="language-cpp">template&lt;class F&gt;
void do(F function)
{
    function();
}
</code></pre>
<p>hat das genau den selben Effekt im Code als würde ich einen void-Zeiger übergeben und diesen zurechtcasten, richtig ?</p>
<p>Nun ja, auf jeden Fall habe ich ein paar Probleme mit dem Code <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>
<p>Das ist der Funktionsprototyp, den ich hier wrappen möchte:</p>
<pre><code class="language-cpp">DetourAttach(void** ppPointer, void* detour);
</code></pre>
<p>Mein Ansatz, der so aber nicht nicht funktioniert:</p>
<pre><code class="language-cpp">template&lt;class F&gt;
void InstallHook(F oldFunction, F newFunction)
{
    DetourAttach(&amp;oldFunction, newfunction);
}
</code></pre>
<p>Wo hängts? <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="😉"
    /><br />
Danke im voraus.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261944/funktionszeiger-und-templates</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:40:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261944.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Feb 2010 21:49:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger und Templates on Thu, 25 Feb 2010 21:49:29 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich bin gerade dabei, einen Wrapper für Detours zu schreiben, einer Hooking-Library von Microsoft.</p>
<p>Nunja, erste Frage, wenn ich jetzt soetwas bastle:</p>
<pre><code class="language-cpp">template&lt;class F&gt;
void do(F function)
{
    function();
}
</code></pre>
<p>hat das genau den selben Effekt im Code als würde ich einen void-Zeiger übergeben und diesen zurechtcasten, richtig ?</p>
<p>Nun ja, auf jeden Fall habe ich ein paar Probleme mit dem Code <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>
<p>Das ist der Funktionsprototyp, den ich hier wrappen möchte:</p>
<pre><code class="language-cpp">DetourAttach(void** ppPointer, void* detour);
</code></pre>
<p>Mein Ansatz, der so aber nicht nicht funktioniert:</p>
<pre><code class="language-cpp">template&lt;class F&gt;
void InstallHook(F oldFunction, F newFunction)
{
    DetourAttach(&amp;oldFunction, newfunction);
}
</code></pre>
<p>Wo hängts? <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="😉"
    /><br />
Danke im voraus.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861545</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Thu, 25 Feb 2010 21:49:29 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger und Templates on Thu, 25 Feb 2010 22:01:14 GMT]]></title><description><![CDATA[<p>Nein. Das ist nicht das gleiche. Templates sind immernoch Typsicher. Das heisst, dass du da auch einen ganz normalen Typen stehen hast. Jedes mögliche T macht dir eine neue Funktion, aber um den cast kommst du nicht herum.</p>
<p>Das nächste mal wäre es auch praktsich, wenn du den Fehler oder was genau nicht geht näher erläutern würdest..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861554</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 25 Feb 2010 22:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger und Templates on Thu, 25 Feb 2010 22:07:15 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Nein. Das ist nicht das gleiche. Templates sind immernoch Typsicher. Das heisst, dass du da auch einen ganz normalen Typen stehen hast. Jedes mögliche T macht dir eine neue Funktion, aber um den cast kommst du nicht herum.</p>
</blockquote>
<p>Was muss ich denn noch machen um das zum Laufen zu bekommen?</p>
<pre><code class="language-cpp">template&lt;class F&gt;
void InstallHook(F oldFunction, F newFunction)
{
    DetourAttach(reinterpret_cast&lt;void*&amp;&gt;(oldFunction), newfunction);
}
</code></pre>
<p>So sieht es derzeit aus.</p>
<blockquote>
<p>Das nächste mal wäre es auch praktsich, wenn du den Fehler oder was genau nicht geht näher erläutern würdest..</p>
</blockquote>
<p>Ganz einfach. Die Funktion wird nicht gehookt, also zeigt der Doppelzeiger irgendwo ins Nirvana, ohne eine Access-Violation zu verursachen und ohne etwas relevantes zu überschreiben ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861556</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Thu, 25 Feb 2010 22:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger und Templates on Thu, 25 Feb 2010 22:14:14 GMT]]></title><description><![CDATA[<p>Na. Das liegt wohl kaum an der Umwandlung der Typen.. Da gibt es höchstens Kompilierfehler, wenn da was nicht passt.</p>
<p>Such den Fehler wo anderst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1861559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1861559</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 25 Feb 2010 22:14:14 GMT</pubDate></item></channel></rss>