<?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[neues Objekt in ein CArray?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse CMessgPrisma die von CObject erbt (siehe unten). Deren Objekte sollen in einem CArray verwaltet werden. Ich habe dazu in meinem Dokument einen Member-Variable angelegt:</p>
<pre><code class="language-cpp">CArray&lt;CMessgPrisma, CMessgPrisma&gt; m_prisma;
</code></pre>
<p>In einer Funktion soll der folgende Code ausgeführt werden:</p>
<pre><code class="language-cpp">...

//neue Messung erstellen
CMessgPrisma NeueMessung;

...

//Messung dem Feld hinzufügen
m_prisma.Add(NeueMessung);

...
</code></pre>
<p>Zwischendurch wird mit dem neuen Objekt noch einiges gemacht, das ist ja aber egal.</p>
<p>Beim kompilieren kommt die Fehlermeldung:</p>
<pre><code>...\DocPrisma.cpp(179) : error C2664: 'Add' : Konvertierung des Parameters 1 von 'class CMessgPrisma' in 'class CMessgPrisma' nicht moeglich
        Kein Kopierkonstruktor fuer class 'CMessgPrisma' verfuegbar
</code></pre>
<p>Wie muß dieser Kopierkonstruktor aussehen bzw. wie bekomme ich so ein neues CMessgPrisma-Objekt in das CArray? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Ohne Ahnung davon zu habe ich es mit diesem Kopierkonstruktor probiert: :p</p>
<pre><code class="language-cpp">class CMessgPrisma : public CObject  
{
private:
	CWinkel m_WinkelLinks, m_WinkelRechts;
	double m_Lambda;

public:
	CMessgPrisma(CMessgPrisma &amp;h);

	...
};

CMessgPrisma::CMessgPrisma(CMessgPrisma &amp;h)
{
	m_WinkelLinks = h.m_WinkelLinks;
	m_WinkelRechts = h.m_WinkelRechts;
	m_Lambda = h.m_Lambda;
}
</code></pre>
<p>Der bringt dann aber der Kompiler den Fehler:</p>
<pre><code>c:\programme\microsoft visual studio\vc98\mfc\include\afxtempl.h(443) : error C2582: 'CMessgPrisma' : 'Operator =' ist nicht verfuegbar
        c:\programme\microsoft visual studio\vc98\mfc\include\afxtempl.h(1566) : Bei der Kompilierung der Member-Funktion 'void __thiscall CArray&lt;class CMessgPrisma,class CMessgPrisma&gt;::SetAtGrow(int,class CMessgPrisma)' der Klassenvorlage
</code></pre>
<p>Bitte helft mir! In diversen Büchern steht nix. Und Google spuckt auch nichts vernünftiges aus. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> BITTE! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Strolli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/67547/neues-objekt-in-ein-carray</link><generator>RSS for Node</generator><lastBuildDate>Sat, 06 Jun 2026 11:06:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/67547.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Mar 2004 15:26:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Tue, 09 Mar 2004 15:26:39 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse CMessgPrisma die von CObject erbt (siehe unten). Deren Objekte sollen in einem CArray verwaltet werden. Ich habe dazu in meinem Dokument einen Member-Variable angelegt:</p>
<pre><code class="language-cpp">CArray&lt;CMessgPrisma, CMessgPrisma&gt; m_prisma;
</code></pre>
<p>In einer Funktion soll der folgende Code ausgeführt werden:</p>
<pre><code class="language-cpp">...

//neue Messung erstellen
CMessgPrisma NeueMessung;

...

//Messung dem Feld hinzufügen
m_prisma.Add(NeueMessung);

...
</code></pre>
<p>Zwischendurch wird mit dem neuen Objekt noch einiges gemacht, das ist ja aber egal.</p>
<p>Beim kompilieren kommt die Fehlermeldung:</p>
<pre><code>...\DocPrisma.cpp(179) : error C2664: 'Add' : Konvertierung des Parameters 1 von 'class CMessgPrisma' in 'class CMessgPrisma' nicht moeglich
        Kein Kopierkonstruktor fuer class 'CMessgPrisma' verfuegbar
</code></pre>
<p>Wie muß dieser Kopierkonstruktor aussehen bzw. wie bekomme ich so ein neues CMessgPrisma-Objekt in das CArray? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Ohne Ahnung davon zu habe ich es mit diesem Kopierkonstruktor probiert: :p</p>
<pre><code class="language-cpp">class CMessgPrisma : public CObject  
{
private:
	CWinkel m_WinkelLinks, m_WinkelRechts;
	double m_Lambda;

public:
	CMessgPrisma(CMessgPrisma &amp;h);

	...
};

CMessgPrisma::CMessgPrisma(CMessgPrisma &amp;h)
{
	m_WinkelLinks = h.m_WinkelLinks;
	m_WinkelRechts = h.m_WinkelRechts;
	m_Lambda = h.m_Lambda;
}
</code></pre>
<p>Der bringt dann aber der Kompiler den Fehler:</p>
<pre><code>c:\programme\microsoft visual studio\vc98\mfc\include\afxtempl.h(443) : error C2582: 'CMessgPrisma' : 'Operator =' ist nicht verfuegbar
        c:\programme\microsoft visual studio\vc98\mfc\include\afxtempl.h(1566) : Bei der Kompilierung der Member-Funktion 'void __thiscall CArray&lt;class CMessgPrisma,class CMessgPrisma&gt;::SetAtGrow(int,class CMessgPrisma)' der Klassenvorlage
</code></pre>
<p>Bitte helft mir! In diversen Büchern steht nix. Und Google spuckt auch nichts vernünftiges aus. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> BITTE! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
<p>Strolli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/476648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/476648</guid><dc:creator><![CDATA[Strolli]]></dc:creator><pubDate>Tue, 09 Mar 2004 15:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 12:31:14 GMT]]></title><description><![CDATA[<p>Verwalte das mit CObArray. Das ist viel einfacher und komfortabler.<br />
Sieht ungefähr so aus:</p>
<pre><code class="language-cpp">CObArray DeinArray;
DeinArray.Add((CObject*)pDeinPrismaDingensObjekt);
</code></pre>
<p>Und schon isses drin <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="😃"
    /><br />
Die Klasse bietet dann noch weitere Funktionen zum Objekte- einfügen, löschen<br />
usw</p>
]]></description><link>https://www.c-plusplus.net/forum/post/477309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/477309</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Wed, 10 Mar 2004 12:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 21:39:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/559">@Cpp_Junky</a><br />
Hab' aber gelesen, dass man in neuen Programmen lieber das CArray verwenden sollte. Dein CObArray verwaltet ja auch nur die Zeiger, ich würde jedoch gern die Objekte selber speichern.</p>
<p>Ist es den wirklich so schwer sich so einen Kopierkonstruktor für mein Objekt auszudenken? Klär mich bitte auf!</p>
<p>Strolli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478032</guid><dc:creator><![CDATA[Strolli]]></dc:creator><pubDate>Wed, 10 Mar 2004 21:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 22:27:42 GMT]]></title><description><![CDATA[<p>Hi Strolli, nimm doch mal deinen Kopierkonstruktor ganz raus. Der Compiler generiert automatisch einen. Du musst eigentlich nur einen schreiben, wenn du mit dynamischen Speicher (new) handhabst. Sieht aber nicht so aus, als wäre es bei dir der Fall, weil du ja keine Zeiger als Membervariablen hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478072</guid><dc:creator><![CDATA[!!]]></dc:creator><pubDate>Wed, 10 Mar 2004 22:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 22:30:15 GMT]]></title><description><![CDATA[<p>sorry. du hattest es ja erst ohne.</p>
<p>kannst du das projekt mal irgendwo hochladen oder per mail verschicken? würde mir das gerne mal angucken, wenn ich darf. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":-P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/478075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478075</guid><dc:creator><![CDATA[!!]]></dc:creator><pubDate>Wed, 10 Mar 2004 22:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 22:55:49 GMT]]></title><description><![CDATA[<p>Kein Problem. Wohin soll ich es mailen? Hochladen geht auch ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478097</guid><dc:creator><![CDATA[Strolli]]></dc:creator><pubDate>Wed, 10 Mar 2004 22:55:49 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 22:58:36 GMT]]></title><description><![CDATA[<p>ja super. dann lad lieber hoch dann können auch noch andere mal gucken!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/478100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478100</guid><dc:creator><![CDATA[!!]]></dc:creator><pubDate>Wed, 10 Mar 2004 22:58:36 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 23:15:04 GMT]]></title><description><![CDATA[<p>Also, als ZIP-Archiv unter <a href="http://www.mycgiserver.com/~strolli/O45.zip" rel="nofollow">http://www.mycgiserver.com/~strolli/O45.zip</a>. Aber versucht bitte nicht das ganze Projekt zu kompilieren, das wird nix. <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="😃"
    /> Hab' noch diverse Änderungen vorgenommen die noch nicht überall eingearbeitet sind.</p>
<p>Das mit dem CArray steht bisher nur in der Klasse CDocPrisma. Deren Interaktion mit der dazugehörigen View (CViewPrisma), CMessgPrisma und CWinkel klappt soweit fehlerfrei. Also nur die CPP-Datei von CDocPrisma kompilieren, dann müßte der Fehler reproduzeirbar sein.</p>
<p>Danke!<br />
Strolli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478117</guid><dc:creator><![CDATA[Strolli]]></dc:creator><pubDate>Wed, 10 Mar 2004 23:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 23:35:38 GMT]]></title><description><![CDATA[<p>Schade das man dein Projekt nicht vollständig kompilieren kann.</p>
<p>Höchstwahrscheinlich liegt es an den konstanten Membervariablen. (hab da jetzt auf die schnelle nur const double pi entdeckt). Dann kann der Compiler nämlich keinen Copy-Constructor generieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478133</guid><dc:creator><![CDATA[ff]]></dc:creator><pubDate>Wed, 10 Mar 2004 23:35:38 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Wed, 10 Mar 2004 23:51:46 GMT]]></title><description><![CDATA[<p>Ne, sorry. Das war es doch nicht.</p>
<p>Hab das zum Compilieren bekommen nach 1000 Änderungen <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>Es liegt irgendwie daran das du von CObject erbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478137</guid><dc:creator><![CDATA[ff]]></dc:creator><pubDate>Wed, 10 Mar 2004 23:51:46 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Thu, 11 Mar 2004 00:06:47 GMT]]></title><description><![CDATA[<p>Hab nochmal folgende Info gefunden:</p>
<p>CObject makes the copy constructor and operator = private, so you can't<br />
do things like this...</p>
<p>Also musst du entweder Copy-Konstruktor UND Zuweisungsoperator selbst schreiben oder du erbst einfach nicht von CObject, was wohl die bessere Wahl ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478147</guid><dc:creator><![CDATA[ff]]></dc:creator><pubDate>Thu, 11 Mar 2004 00:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to neues Objekt in ein CArray? on Thu, 11 Mar 2004 02:00:56 GMT]]></title><description><![CDATA[<p>Von CObject würde ich schon erben - ich denke mal er braucht das später für Serialisierung.</p>
<pre><code class="language-cpp">class CMessgPrisma : public CObject  
{
private:
	CWinkel m_WinkelLinks, m_WinkelRechts;
	double m_Lambda;
public:
	CMessgPrisma()
	{
		// Standardinit.
	}
	CMessgPrisma(const CMessgPrisma&amp; src) :
		m_WinkelLinks(src.m_WinkelLinks),
		// ...
	{}
	operator =(const CMessgPrisma&amp; src)
	{
		m_Lambda = src.m_Lambda;
		// ...
	}
};
</code></pre>
<p>/edit:</p>
<p>Und nimm:<br />
[cpp]CArray&lt;CMessgPrisma, CMessgPrisma/* --&gt; <em>/<strong>&amp;</strong>&gt; m_prisma;[/cpp]<br />
Sonst muss bei Add</em> 2x kopiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/478163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/478163</guid><dc:creator><![CDATA[Oliver]]></dc:creator><pubDate>Thu, 11 Mar 2004 02:00:56 GMT</pubDate></item></channel></rss>