ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
2053
2053
EMPFEHLEN
-
20.10.07 22:56 #1
- Registriert seit
- Dec 2004
- Beiträge
- 160
Hallo,
ich habe eine Funktion, die ein CArray<CString,CString> zurückgeben soll:
Wenn ich das nun kompiliere, erhalte ich folgenden Fehler:Code :1 2 3 4
CArray<CString,CString> ClusterServer::getRecvData() { return m_recvData; }
Code :1 2 3 4 5 6 7 8 9
1>c:\programme\programmieren\microsoft visual studio 8\vc\atlmfc\include\afxtempl.h(272) : error C2248: "CObject::CObject": Kein Zugriff auf private Member, dessen Deklaration in der CObject-Klasse erfolgte. 1> c:\programme\programmieren\microsoft visual studio 8\vc\atlmfc\include\afx.h(558): Siehe Deklaration von 'CObject::CObject' 1> c:\programme\programmieren\microsoft visual studio 8\vc\atlmfc\include\afx.h(529): Siehe Deklaration von 'CObject' 1> Diese Diagnose trat in der vom Compiler generierten Funktion "CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)" auf. 1> with 1> [ 1> TYPE=CString, 1> ARG_TYPE=CString 1> ]
Kann man ein CArray nicht zurückgeben oder nur einen pointer davon?
Danke für eure Hilfe
gamerufunkie
-
18.06.08 00:52 #2
Hi,
schreibe deine Funktion lieber so um, dass sie eine Referenz auf ein CArray entgegennimmt.
Dieses kannst du dann innerhalb der Funktion so verwenden, als wenn du es innerhalb dieser Funktion erstellt hast.
Code :1 2 3 4 5 6
BOOL MyClass::MyFunc(CArray &arr) { arr.Add(...); return TRUE; }
Mit dieser Art solltest du keine probleme haben!
Wenn du unbedingt ein CArray als Rückgabewert haben willst, dann gib ebenfalls eine Referenz darauf zurück :
Code :1 2 3 4
CArray<CString,CString> &ClusterServer::getRecvData() { return m_recvData; }
Solltest du aber net mit Objekten machen, die du innerhalb einer Methode deklarierst!
Viel Erfolg,
Peter
Viel Erfolg,
PeterDer Computer wird das tun, was du programmierst - nicht das, was du willst ;-)
-
CArray hat keinen öffentlicher Kopierkonstruktor, daher funktioniert deine Methodenimplementierung nicht. Überhaupt finde ich die Containerklassen der MFC nicht so besonders. Mit einem vector aus der STL könntest du das nämlich so realisieren:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#pragma once #include <vector> class ClusterServer { public: ClusterServer(); ~ClusterServer(); std::vector<CString> getRecvData() { return m_recvData; } private: std::vector<CString> m_recvData; };
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
Ähnliche Themen
-
CList bzw. CArray
Von Winner im Forum C/C++Antworten: 1Letzter Beitrag: 02.04.09, 13:54 -
jQuery: $.post Rückgabewert als Rückgabewert der Funktion - geht das?
Von Kryptaesthesie im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 15.01.09, 07:40 -
Zweidimensonales CArray?
Von Perdan im Forum C/C++Antworten: 3Letzter Beitrag: 24.01.08, 17:39 -
CArray<int,int> serializieren
Von mistirios im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 23.08.07, 19:15 -
[VC++6 MFC] CArray template als parameter
Von davedigital im Forum C/C++Antworten: 13Letzter Beitrag: 21.08.02, 11:58





Zitieren

Login






