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

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

;

【讨论】:

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

C++中子类从基类都继承啥?

简述在类的继承关系中,子类可以继承父类的都有哪些成员

类的构造方法和常用的get,set方法

我可以从 C# 中同一类的另一个构造函数调用重载构造函数吗?

如何在同一个类的静态方法中访问类的受保护变量?

java中关键字super