从不同的类访问/填充向量?

时间:2012-11-03 21:47:59

标签: c++ vector

我对如何使用来自不同类的值填充向量感到困惑。

任何人都可以给我一个编码示例如何完成此操作。 :)

Class A
{
   //vector is here
}
Class B
{
   //add values to the vector here
}
 main()
{
  //access the vector here, and print out the values
}

我感谢帮助< 3

3 个答案:

答案 0 :(得分:1)

access levelsencapsulation似乎是一个快速的课程。

答案 1 :(得分:0)

我的猜测,根据问题,触摸是你正在寻找以下代码。

int main()
{
  ClassA[] as = {new ClassA(), new ClassA(), ... }
  ClassB[] bs = {new ClassB(), new ClassB(), ... }
}

但是我在黑暗中拍摄了一下。 :)

答案 2 :(得分:0)

您应使您的问题更具体,编辑并发布您尝试过的内容。如果你的意思是做一些尊重oop规则的事情,这个游戏看起来像这样:

#include<iostream>
#include<vector>
class A{
public:
  void fill_up_the_vector() { v=std::vector<int>(3); v[0]=0; v[1]=1; v[2]=4; }
  void add( a.add(i); ) { v.push_back(i); }
  void display_last() const { std::cout<<v[v.size()-1]; }
private:
  std::vector<int> v;
};

class B{
public:
  B(){ a.fill_up_the_vector(); }  // B just *instructs* A to fill up its vector.
  void add_value(int i) { a.add(i); }
  void display() const { a.display_last(); }
private:
  A a;
};

int main()
{
  B b;
  b.add_value(9);
  b.display(); // reads v through A.
}

请注意,上面的示例与您提出的内容略有不同。我发布它,因为我认为你应该记住,根据OOP规则

  • 您不希望直接访问A中的值,
  • 如果您计划访问A,中的值,
  • B应该有一个类型为A的成员
  • 如果您已从B填充,则应该访问A到B中的值。

另一种方法是 OOP:

struct A{
  std::vector<int> v;
};

struct B{
  static void fill_A(A& a) const { a.v = std::vector<int>(3); a.v[0]=0; a.v[1]=1; a.v[2]=4; }
};

int main()
{
  A a;
  B::fill_A(a);
  a.v.push_back(9);
  std::cout << a.v[a.v.size()-1];
}

但是这段代码和它一样可怕。