<?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[Problem mit typedef struct {..} name; und class forwarding]]></title><description><![CDATA[<p>Folgende Fehlermeldung VS2012:</p>
<p>`error C2371: 'tFrame' : redefinition; different basic types</p>
<p>api_user.h(4) : see declaration of 'tFrame'`</p>
<p>Was probiere ich:</p>
<p>In Api_User.h definiere ich eine Klasse <code>test</code> die einen Pointer tFrame verwaltet. Um die Abhaengigkeiten gering zu halten, deklariere ich die Klasse tFrame im voraus. Hintergrund: Nur diejenigen, die wirklich was mit tFrame machen moechten, muessen den entsprechenden Header inkludieren.</p>
<pre><code class="language-cpp">#ifndef API_USER_H
#define API_USER_H

struct tFrame;

class test
{
    tFrame* ptr_;
};
#endif
</code></pre>
<p>Ungluecklicherweise ist <code>tFrame</code> als Datenelement einer externen C-Api in Api.h mittels <code>typedef</code> wie folgt deklariert:</p>
<pre><code class="language-cpp">#ifndef API_H
#define API_H

typedef struct
{
} tFrame;
#endif
</code></pre>
<p>Will ich nun beide benutzen, wirft der Kompiler obige Fehlermeldung.</p>
<pre><code class="language-cpp">#include &quot;Api_User.h&quot;
#include &quot;Api.h&quot;

int main()
{
	return 0;
}
</code></pre>
<p>Wie sieht eine richtige forward Deklaration in diesem Fall ( <code>typedef struct {..} name;</code> ) aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311244/problem-mit-typedef-struct-name-und-class-forwarding</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:43:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311244.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2012 14:16:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Fri, 30 Nov 2012 14:16:16 GMT]]></title><description><![CDATA[<p>Folgende Fehlermeldung VS2012:</p>
<p>`error C2371: 'tFrame' : redefinition; different basic types</p>
<p>api_user.h(4) : see declaration of 'tFrame'`</p>
<p>Was probiere ich:</p>
<p>In Api_User.h definiere ich eine Klasse <code>test</code> die einen Pointer tFrame verwaltet. Um die Abhaengigkeiten gering zu halten, deklariere ich die Klasse tFrame im voraus. Hintergrund: Nur diejenigen, die wirklich was mit tFrame machen moechten, muessen den entsprechenden Header inkludieren.</p>
<pre><code class="language-cpp">#ifndef API_USER_H
#define API_USER_H

struct tFrame;

class test
{
    tFrame* ptr_;
};
#endif
</code></pre>
<p>Ungluecklicherweise ist <code>tFrame</code> als Datenelement einer externen C-Api in Api.h mittels <code>typedef</code> wie folgt deklariert:</p>
<pre><code class="language-cpp">#ifndef API_H
#define API_H

typedef struct
{
} tFrame;
#endif
</code></pre>
<p>Will ich nun beide benutzen, wirft der Kompiler obige Fehlermeldung.</p>
<pre><code class="language-cpp">#include &quot;Api_User.h&quot;
#include &quot;Api.h&quot;

int main()
{
	return 0;
}
</code></pre>
<p>Wie sieht eine richtige forward Deklaration in diesem Fall ( <code>typedef struct {..} name;</code> ) aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276108</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 30 Nov 2012 14:16:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Fri, 30 Nov 2012 14:23:01 GMT]]></title><description><![CDATA[<pre><code>struct mytFrame;
typedef mytFrame tFrame;
</code></pre>
<p>Edit: vergisses...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276109</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Fri, 30 Nov 2012 14:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Fri, 30 Nov 2012 19:45:30 GMT]]></title><description><![CDATA[<p>Geht nicht. Was Du da hast, ist ein typedef auf ein anonymes struct. Typedefs kannst Du nicht vorwärts deklarieren. Du brauchst eine nicht anonyme struct.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276217</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 30 Nov 2012 19:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Fri, 30 Nov 2012 19:54:22 GMT]]></title><description><![CDATA[<p>Du müsstest hier wohl <code>void*</code> oder einen typsicheren Wrapper darum herum benutzen.</p>
<p>Kommt <code>tFrame</code> in Api_User.h sonst noch vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276218</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 30 Nov 2012 19:54:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Fri, 30 Nov 2012 20:14:38 GMT]]></title><description><![CDATA[<p>Als Workaround könntest Du vielleicht auch von dem Typedef ableiten, und dann den dabei entstehenden Typen benutzen. Ich bin mir aber gerade nicht sicher, ob das Verhalten noch definiert ist, wenn Du Objekte vom abgeleiteten Typen in das C-API gibst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276224</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 30 Nov 2012 20:14:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit typedef struct {..} name; und class forwarding on Sat, 01 Dec 2012 12:37:34 GMT]]></title><description><![CDATA[<p>Ich dachte mir schon, das es nicht geht, leider. Ableiten moechte ich nicht. Die aktuelle alternative ist <code>void*</code> und dabei wird es wohl oder uebel bleiben. Danke fuer die Vorschlage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276296</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sat, 01 Dec 2012 12:37:34 GMT</pubDate></item></channel></rss>