2016-12-23 3 views
-3

У меня есть этот код:Как я могу обратиться к переменной из конструкции для использования в методе того же класса?

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()); 
    } 
}; 

Когда я пытаюсь использовать class_people в show_data(), компилятор жалуется, что переменный не объявлен.

ответ

0

Если вы хотите, чтобы все ваши функции-члены для доступа к переменной, вам нужно, чтобы сделать его член переменную своего класса:

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) 
    {} 

}; 

Естественно ваш конструктор будет необходима некоторая адаптация (и я предполагал people и birth будет глобальным, как в вашем примере кода).

+0

Похоже, он также пытается инициализировать векторы. Может быть, вы должны добавить правильный способ сделать это. – Barmar

0

Предположим, что конструктор принимает аргументы инициализации

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])) 
     {} 

};