2016-11-26 2 views
1

Für eine Klassenzuweisung müssen wir eine private Struktur in einer Klasse haben, aber wir müssen die gleiche Struktur wie einen Rückgabewert (kein Zeiger darauf) haben. Etwas in diese Richtung:Festlegen einer privaten Struktur als Rückgabewert

private: 
    struct Employee 
    { 
     int id; 
     string name;  
    }; 

public: 
    struct Employee find(int key); 

Ist dies möglich mit ausschließlich der STL?

+3

Ja, es ist möglich. Und das hat nichts mit STL zu tun. –

+2

C++ verwendet das Schlüsselwort 'struct' nicht für Typnamen (neben Deklarationen). – Dai

+0

"Mitarbeiter" ist nicht "Mitarbeiter". – melpomene

Antwort

0

Es kann getan werden, aber macht keinen großen Sinn, weil die Schnittstelle öffentlich sein sollte.

Zum Beispiel

#include <iostream> 
#include <string> 

struct C 
{ 
private: 
    struct Employee 
    { 
     int id; 
     std::string name;  
    }; 

    Employee e = { 1, "First" }; 

public: 
    Employee find(int key) const 
    { 
     return key == e.id ? e : Employee {}; 
    } 
}; 

int main() 
{ 
    C c; 

    auto e = c.find(1); 

    std::cout << e.name << std::endl; 

    return 0; 
} 

Die Programmausgabe ist

First 
+0

danke, ich gebe das eine Chance! – Krick

Verwandte Themen