tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
2053
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    gamerfunkie gamerfunkie ist offline Mitglied Gold
    Registriert seit
    Dec 2004
    Beiträge
    160
    Hallo,
    ich habe eine Funktion, die ein CArray<CString,CString> zurückgeben soll:
    Code :
    1
    2
    3
    4
    
    CArray<CString,CString> ClusterServer::getRecvData()
    {
        return m_recvData;
    }
    Wenn ich das nun kompiliere, erhalte ich folgenden Fehler:
    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
     

  2. #2
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    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,

    Peter
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  3. #3
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von gamerfunkie Beitrag anzeigen
    Kann man ein CArray nicht zurückgeben oder nur einen pointer davon?
    gamerfunkie
    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:
    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;
    };
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

Ähnliche Themen

  1. CList bzw. CArray
    Von Winner im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 02.04.09, 13:54
  2. jQuery: $.post Rückgabewert als Rückgabewert der Funktion - geht das?
    Von Kryptaesthesie im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 15.01.09, 07:40
  3. Zweidimensonales CArray?
    Von Perdan im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 24.01.08, 17:39
  4. CArray<int,int> serializieren
    Von mistirios im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 23.08.07, 19:15
  5. [VC++6 MFC] CArray template als parameter
    Von davedigital im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 21.08.02, 11:58