2016-11-26 4 views
1

クラスの割り当てでは、クラスにprivate構造体が必要ですが、戻り値と同じ構造体を持つ必要があります(ポインタではありません)。これらの線に沿ったもの:戻り値としてプライベート構造体を設定する

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

public: 
    struct Employee find(int key); 

これはSTL専用ですか?

+3

はい、それは可能です。これはSTLとは関係ありません。 –

+2

C++は型名(宣言以外にも)に 'struct'キーワードを使用しません。 – Dai

+0

'employee'は' Employee'ではありません。 – melpomene

答えて

0

インターフェイスを公開する必要があるため、これは可能ですが、意味がありません。

#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; 
} 

ためのプログラム出力は

First 
+0

ありがとう、私はそのショットを与えるよ! – Krick

関連する問題