如何从构造中寻址变量以用于同一类的方法?
Posted
技术标签:
【中文标题】如何从构造中寻址变量以用于同一类的方法?【英文标题】:How can i address to a variable from construct for use in method of same class? 【发布时间】:2016-12-23 20:47:04 【问题描述】:我有这个代码:
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());
;
当我尝试在show_data()
中使用class_people
时,编译器会抱怨未声明变量。
【问题讨论】:
【参考方案1】:如果你想让你的所有成员函数都访问一个变量,你需要把它变成你的类的成员变量:
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
是全局的,如您的代码示例中所示)。
【讨论】:
看起来他也在尝试初始化向量。也许你应该添加正确的方法来做到这一点。【参考方案2】:假设构造函数接受初始化参数
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]))
;
【讨论】:
以上是关于如何从构造中寻址变量以用于同一类的方法?的主要内容,如果未能解决你的问题,请参考以下文章