如何从构造中寻址变量以用于同一类的方法?

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)
  

;

当然,您的构造函数需要一些调整(我假设 peoplebirth 是全局的,如您的代码示例中所示)。

【讨论】:

看起来他也在尝试初始化向量。也许你应该添加正确的方法来做到这一点。【参考方案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]))
      

;

【讨论】:

以上是关于如何从构造中寻址变量以用于同一类的方法?的主要内容,如果未能解决你的问题,请参考以下文章