<?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[Eine Struktur in der Initialisierungsliste initialisieren]]></title><description><![CDATA[<p>Hallo,<br />
wie initialisiert man eine Struktur in einer Initialisierungsliste? Durch die SuFu habe ich bereits gelernt, wie man alles mit Null initialisieren kann - siehe Zeile 32, die Struktur OVERLAPPED. Wie kann ich z.B. hEvent einen anderen Wert zweisen?</p>
<p>LG<br />
Bernd</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

/* Aufbau der Struktur OVERLAPPED aus winbase.h 
typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union {
        struct {
            DWORD Offset;
            DWORD OffsetHigh;
        };

        PVOID Pointer;
    };

    HANDLE  hEvent;
} OVERLAPPED, *LPOVERLAPPED;
*/

class CUSBPipe
{
public:
  CUSBPipe(UCHAR aEndpointAddress);

  UCHAR EndpointAddress;
  OVERLAPPED DeviceOverlapped;
};

CUSBPipe::CUSBPipe(UCHAR aEndpointAddress): 
  EndpointAddress(aEndpointAddress)
  DeviceOverlapped()
{
}

int main()
{
CUSBPipe P(0x82);
std::cout &lt;&lt; &quot;Internal    : &quot;  &lt;&lt; P.DeviceOverlapped.Internal     &lt;&lt; std::endl
          &lt;&lt; &quot;InternalHigh: &quot;  &lt;&lt; P.DeviceOverlapped.InternalHigh &lt;&lt; std::endl 
          &lt;&lt; &quot;Pointer     : &quot;  &lt;&lt; P.DeviceOverlapped.Pointer      &lt;&lt; std::endl 
          &lt;&lt; &quot;hEvent      : &quot;  &lt;&lt; P.DeviceOverlapped.hEvent       &lt;&lt; std::endl;

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/205106/eine-struktur-in-der-initialisierungsliste-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 23:44:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205106.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Feb 2008 16:14:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 16:14:11 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wie initialisiert man eine Struktur in einer Initialisierungsliste? Durch die SuFu habe ich bereits gelernt, wie man alles mit Null initialisieren kann - siehe Zeile 32, die Struktur OVERLAPPED. Wie kann ich z.B. hEvent einen anderen Wert zweisen?</p>
<p>LG<br />
Bernd</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

/* Aufbau der Struktur OVERLAPPED aus winbase.h 
typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union {
        struct {
            DWORD Offset;
            DWORD OffsetHigh;
        };

        PVOID Pointer;
    };

    HANDLE  hEvent;
} OVERLAPPED, *LPOVERLAPPED;
*/

class CUSBPipe
{
public:
  CUSBPipe(UCHAR aEndpointAddress);

  UCHAR EndpointAddress;
  OVERLAPPED DeviceOverlapped;
};

CUSBPipe::CUSBPipe(UCHAR aEndpointAddress): 
  EndpointAddress(aEndpointAddress)
  DeviceOverlapped()
{
}

int main()
{
CUSBPipe P(0x82);
std::cout &lt;&lt; &quot;Internal    : &quot;  &lt;&lt; P.DeviceOverlapped.Internal     &lt;&lt; std::endl
          &lt;&lt; &quot;InternalHigh: &quot;  &lt;&lt; P.DeviceOverlapped.InternalHigh &lt;&lt; std::endl 
          &lt;&lt; &quot;Pointer     : &quot;  &lt;&lt; P.DeviceOverlapped.Pointer      &lt;&lt; std::endl 
          &lt;&lt; &quot;hEvent      : &quot;  &lt;&lt; P.DeviceOverlapped.hEvent       &lt;&lt; std::endl;

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1453139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453139</guid><dc:creator><![CDATA[BerndD]]></dc:creator><pubDate>Sun, 10 Feb 2008 16:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 17:42:45 GMT]]></title><description><![CDATA[<p>Du kannst der struct einen Konstruktor geben und diesen dann aus der Initialisierungsliste aufrufen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1453193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453193</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sun, 10 Feb 2008 17:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 18:04:14 GMT]]></title><description><![CDATA[<p>Ja aber die Struktur OVERLAPPED ist aus winbase.h. Da kann ich doch nichts verändern. Geht das nicht ohne Konstruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453212</guid><dc:creator><![CDATA[BerndD]]></dc:creator><pubDate>Sun, 10 Feb 2008 18:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 18:06:58 GMT]]></title><description><![CDATA[<p>Nicht per Initialisierungsliste ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453217</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 10 Feb 2008 18:06:58 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 18:20:00 GMT]]></title><description><![CDATA[<p>Naja, dass es auf biegen und brechen nicht gehen würde...</p>
<pre><code class="language-cpp">class foo_t {
	private:
		struct bar_t {
			int m_a, m_b;
		} m_bar;

		static bar_t&amp; create_bar( int a, int b ) {
			static bar_t bar;
			bar.m_a = a;
			bar.m_b = b;
			return bar;
		}

	public:
		foo_t( int a, int b )
			: m_bar( create_bar( a, b ) ) {
		}
};
</code></pre>
<p>...aber dann kannst du ebensogut den c-tor der Klasse bemühen.</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453224</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 10 Feb 2008 18:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 18:36:51 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Naja, dass es auf biegen und brechen nicht gehen würde...</p>
<pre><code class="language-cpp">class foo_t {
	private:
		struct bar_t {
			int m_a, m_b;
		} m_bar;

		static bar_t&amp; create_bar( int a, int b ) {
			static bar_t bar;
			bar.m_a = a;
			bar.m_b = b;
			return bar;
		}

	public:
		foo_t( int a, int b )
			: m_bar( create_bar( a, b ) ) {
		}
};
</code></pre>
<p>...aber dann kannst du ebensogut den c-tor der Klasse bemühen.</p>
<p>greetz, Swordfish</p>
</blockquote>
<p>Abgesehen vom static ist das der richtige Ansatz, create_bar ist dann im Grunde so etwas wie ein benannter Konstruktor.</p>
<pre><code class="language-cpp">bar_t create_bar( int a, int b ) {
    bar_t bar;
    bar.m_a = a;
    bar.m_b = b;
    return bar;
}
</code></pre>
<p>Alle eventuell anfallenden Kopien können trivial eliminiert werden, dies ist also genauso effizient wie direkte Initialisierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453232</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 10 Feb 2008 18:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Struktur in der Initialisierungsliste initialisieren on Sun, 10 Feb 2008 19:48:23 GMT]]></title><description><![CDATA[<p>Hm, komisch. Ich hab' mir aus unerfindlichen Gründen sorgen gemacht, die neue Instanz könnte vor dem kopieren noch irgendwo flötengehen. Deshalb Paranoia-Ref. und static... <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>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1453292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1453292</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 10 Feb 2008 19:48:23 GMT</pubDate></item></channel></rss>