2016-12-23 5 views
-3

Ich habe diesen Code:Wie kann ich eine Variable von Konstrukt für die Verwendung in Methode der gleichen Klasse adressieren?

class Passport 
{ 
public: 
    Passport() 
    { 
     std::vector<std::string> class_people(people,people+6); 
     std::vector<std::string> class_birth(birth,birth+6); 
    } 

    void show_data() { 
     std::copy(class_people.begin(), class_birth.end()); 
    } 
}; 

Wenn ich versuche, class_people in show_data() zu verwenden, beschwert sich der Compiler, dass die Variable nicht deklariert ist.

Antwort

0

Wenn Sie alle Ihre Mitgliederfunktionen wollen eine Variable zuzugreifen, müssen Sie es ein Mitglied Variable Ihrer Klasse machen:

class Passport { 
    std::vector<std::string> class_people; 
    std::vector<std::string> class_birth; 

public: 
    Passport(): 
    class_people(people,people+6), 
    class_birth(birth,birth+6) 
    {} 

}; 

Natürlich Konstruktor wird eine gewisse Anpassung benötigen (und ich nahm an people und birth global sein, wie in Ihrem Codebeispiel).

+0

Es sieht aus wie er auch die Vektoren zu initialisieren versucht. Vielleicht solltest du den richtigen Weg dazu finden. – Barmar

0

Angenommen, Konstruktorinitialisierung Argumente nimmt

class Passport { 
     std::vector<std::string> class_people; 
     std::vector<std::string> class_birth; 

    public: 
     Passport(const char* people[], const char* birth[]) 
     : class_people(people,people+sizeof(people)/sizeof(people[0])) 
     , class_birth(birth,birth+sizeof(birth)/sizeof(birth[0])) 
     {} 

}; 
Verwandte Themen