<?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 Objektreferenz]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich möchte in meinem Programm gerne in einer Ringliste alle mir bekannten Geräte speichern. Dazu habe ich folgende Prototypen definiert:</p>
<pre><code class="language-cpp">class PCIDevRing
{
public:
	PCIDevRing();
	~PCIDevRing();
	void			addDevice(PCIDevRing ring, unsigned short vendorID, unsigned short deviceID, unsigned char bus, unsigned char device, unsigned char function);
	void			createRing(PCIDevRing ring);
	unsigned int	getDeviceCounter();

private:
	unsigned short	vendorID;
	unsigned short	deviceID;
	unsigned char	bus;
	unsigned char	device;
	unsigned char	function;
	unsigned short	counter;
	PCIDevRing		nextDevice;
	PCIDevRing		previousDevice;
};
</code></pre>
<p>Nun habe ich das Problem bei den letzten beiden Zeilen meckert der Compiler (g++). Ich kenne von Java her die Möglichkeit Objektreferenzen so zu speichern. G++ meldet mir jedoch &quot;Feld &lt;&lt;nextDevice&gt;&gt; hat unvollständigen Typen.&quot; und &quot;Feld &lt;&lt;previousDevice&gt;&gt; hat unvollständigen Typen.&quot;. Was mache ich falsch, offenbar kann ich die letzten beiden Zeilen so nicht formulieren, aber wo liegt mein Denkfehler und wie müssten diese Zeilen korrekt lauten?</p>
<p>Danke für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233441/problem-mit-objektreferenz</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 21:59:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233441.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Feb 2009 18:04:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Objektreferenz on Wed, 04 Feb 2009 18:04:41 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich möchte in meinem Programm gerne in einer Ringliste alle mir bekannten Geräte speichern. Dazu habe ich folgende Prototypen definiert:</p>
<pre><code class="language-cpp">class PCIDevRing
{
public:
	PCIDevRing();
	~PCIDevRing();
	void			addDevice(PCIDevRing ring, unsigned short vendorID, unsigned short deviceID, unsigned char bus, unsigned char device, unsigned char function);
	void			createRing(PCIDevRing ring);
	unsigned int	getDeviceCounter();

private:
	unsigned short	vendorID;
	unsigned short	deviceID;
	unsigned char	bus;
	unsigned char	device;
	unsigned char	function;
	unsigned short	counter;
	PCIDevRing		nextDevice;
	PCIDevRing		previousDevice;
};
</code></pre>
<p>Nun habe ich das Problem bei den letzten beiden Zeilen meckert der Compiler (g++). Ich kenne von Java her die Möglichkeit Objektreferenzen so zu speichern. G++ meldet mir jedoch &quot;Feld &lt;&lt;nextDevice&gt;&gt; hat unvollständigen Typen.&quot; und &quot;Feld &lt;&lt;previousDevice&gt;&gt; hat unvollständigen Typen.&quot;. Was mache ich falsch, offenbar kann ich die letzten beiden Zeilen so nicht formulieren, aber wo liegt mein Denkfehler und wie müssten diese Zeilen korrekt lauten?</p>
<p>Danke für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658040</guid><dc:creator><![CDATA[sevobal]]></dc:creator><pubDate>Wed, 04 Feb 2009 18:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Objektreferenz on Wed, 04 Feb 2009 18:07:38 GMT]]></title><description><![CDATA[<p>Alle Typen, die du in einer Klasse hast, müssen vollständig bekannt sein. Das kann bei dir gar nicht der Fall sein, da du das Objekt selbst brauchst, während du noch in der Definition bist.</p>
<p>Die Lösung besteht darin, dass du lediglich einen Zeiger auf das Objekt speicherst, da der Typ eines Zeigers auf ein Objekt dem Compiler bekannt ist und die Grösse des Objektes selbst nicht wissen muss.</p>
<p>Das ist halt ein Unterschied zu Java. In C++ sind das noch wirkliche Objekte, und nicht lediglich Zeiger auf die. <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/1658043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658043</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 18:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Objektreferenz on Wed, 04 Feb 2009 18:19:51 GMT]]></title><description><![CDATA[<p>Achso, dann also einfach so:</p>
<pre><code class="language-cpp">class PCIDevRing
{
public:
    PCIDevRing();
    ~PCIDevRing();
    void            addDevice(PCIDevRing ring, unsigned short vendorID, unsigned short deviceID, unsigned char bus, unsigned char device, unsigned char function);
    void            createRing(PCIDevRing ring);
    unsigned int    getDeviceCounter();

private:
    unsigned short    vendorID;
    unsigned short    deviceID;
    unsigned char    bus;
    unsigned char    device;
    unsigned char    function;
    unsigned short    counter;
    unsigned int        *nextDevice;
    unsigned int        *previousDevice;
};
</code></pre>
<p>Müsste jetzt soweit richtig sein oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658055</guid><dc:creator><![CDATA[sevobal]]></dc:creator><pubDate>Wed, 04 Feb 2009 18:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Objektreferenz on Wed, 04 Feb 2009 18:30:26 GMT]]></title><description><![CDATA[<p>Warum unsigned int?!</p>
<pre><code class="language-cpp">PCIDevRing obj; // Objekt des Types PCIDevRing
PCIDevRing* pobj; //Zeiger auf ein Objekt mit Typ PCIDevRing
</code></pre>
<p>Ich habe irgendwie das Gefühl, dass du dich nicht wirklich mit C++ beschäftig hast und die riesen Unterschiede zwischen Java und C++ nicht ganz siehst.. Syntax ist ähnlich, aber viele Konzepte sind von Grund auf anders und somit sehr verwirrend, wenn man von einem Standardverhalten ausgeht. Ich empfehle ein anständiges Tutorial zu C++ oder ein gutes Buch. Sonst wirst du nur Ärger haben, was nicht sein muss.</p>
<p>z.B sei gesagt, dass wenn du den Zeiger da oben hast noch kein Objekt hast. Das muss du zuerst irgendwie erzeugen. (new wahrscheinlich). Und dann musst du dich um die ganze Speicherverwaltung kümmern (mit delete wieder freigeben) und dafür sorgen,dass auch im Falle einer exception dein Objekt wieder richtig zerstört wird.. usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658059</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 18:30:26 GMT</pubDate></item></channel></rss>