【问题标题】:Iterating over a vector of type some class in another class迭代另一个类中某个类的类型的向量
【发布时间】:2015-05-17 20:06:24
【问题描述】:

请用 C++ 代码帮助我,我已经注释了我想做的任何事情,我有一个类 DEF,它有一个 ABC 类型的向量。 ABC有一些成员。我有另一个类 ZYX,我想在其中使用类 DEF 中的向量迭代 ABC 类的成员。我也不能更改 ABC 和 DEF 类

class ABC{
   public:
    //some members and other stuff
}

class DEF{
    public:
    ....
    vector<ABC> cdf;    //ABC is some other class

}



//includes all the necessary part including DEF and ABC
class ZYX{

   //iterate over members of ABC using cdf
}

【问题讨论】:

    标签: c++ c++11 vector iterator


    【解决方案1】:

    您听说过访问修饰符吗? 有像privateprotectedpublic 这样的关键字,它们声明了如何从外部访问类中的变量。在这里阅读:http://www.cplusplus.com/doc/tutorial/classes/ c++ 类中的默认访问修饰符是私有的。这使得您在类中声明的变量无法从外部访问。

    最简单的解决方案是制作您要使用的特定变量public

    class DEF
    {
    public:
      vector<ABC> cdf;    //can be accessed from outside
    }
    

    不优雅但有效。可能更好的方法是声明一个返回对您要访问的变量的引用的函数,例如:

    class DEF
    {
    private:
      vector<ABC> cdf;    //can NOT be accessed from outside
    public:
      vector<ABC>& get_cdf() { return cdf; }  //can be accessed from outside
    }
    

    【讨论】:

    • 成员都是公开的。我正在寻找一个代码来迭代......在 ZYX 类中。我无法控制 DEF 或 ABC 类
    • 那为什么要展示你的课程布局,尽可能精确地提出问题呢?对于迭代 std 容器,请考虑 cpp 语言参考 cplusplus.com/reference/vector/vector/begin
    • 我的问题是向量包含类型作为其他类,我想访问其成员,而不是一些 int,我也有语法问题,在哪里使用 -> 和哪里。 ,所以一些代码 sn-p 会更好地帮助我使用类作为我提到的类型。
    • 当访问任意类型的向量元素的成员时,使用类似 myvector[index].mymember 的表达式。我不会解释“->”和“.”之间的区别。如果您不知道这一点,则您对 c++ 语言语法没有基本的了解。那里有很多很好的教程。只需阅读它们。这是一个很好的起点cplusplus.com/doc/tutorial
    猜你喜欢
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2015-09-07
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多