如何在C ++中的另一个类中访问矢量对象

时间:2018-12-30 13:57:33

标签: c++ c++11

我是c ++的新手,我创建了两个类。一个类(例如A)会将结构数据推入向量,而另一个类(例如B)将从向量中弹出数据。

如何将向量的引用从A类传递给B,以便B类可以指向同一向量对象以弹出数据,以进行一些操作。

谁能帮助我解决这个问题

到目前为止,我的努力是 A.h文件:

struct strctOfA {
       int x;
       int y;
       int z;
    };  


class A {
public:

A();        
private:
     std::vector<strctOfA> t2;
};

A.cpp文件:

         A::A() {

        strctOfA player;
        player.x=1;
        player.y=2;
        player.z=3;



        t2.push_back(player)
        B b;
        b.functionOfB(&t2); 
        }

B.h文件

         class B {

        public:
             B();
             functionOfB(&t2);
        };

B.cpp:

 B::functionOfB(A &t) {
    t2.pop_front(); 
    }

1 个答案:

答案 0 :(得分:0)

使用一个朋友类,这是一个在另一个类中被声明为friend(用关键字friend)的类。它可以访问其他类的私有成员和受保护成员。允许特定的类访问另一个类的私有成员很有用。 示例:

a.h

typedef struct strctOfA {
   int x;
   int y;
   int z;
}positions;
class A {
public:
    A();
    friend class B;
private:
    strctOfA player;
    std::vector<positions> t2;
};

a.cpp

    A::A() {
    player.x=1;
    player.y=2;
    player.z=3;
    t2.push_back(player);
}

b.h

class B {
public:
    B();
    void functionOfB(A &x);
};

b.cpp

B::B() {
}
void B::functionOfB(A &x) {
    x.t2.pop_back();
}

main.cpp

int main() {
    A instanceOfA;
    B *instanceOfB = new B();
    instanceOfB->functionOfB(instanceOfA);
    return 0;
}