Как получить доступ к объекту вектора в другом классе в C ++ - PullRequest
0 голосов
/ 30 декабря 2018

Я новичок в c ++. Я создал два класса. Один класс (скажем, A) будет помещать данные структуры в вектор, а другой класс (скажем, B) будет извлекать данные из вектора.

Как передать ссылку на вектор из класса A в класс B, чтобы класс B мог указывать на один и тот же векторный объект для извлечения данных, для некоторой манипуляции.

Может кто-нибудь помочь мне решить эту проблему

Пока что мои усилия таковы: А, файл:

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); 
        }

Файл Bh

         class B {

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

B.cpp:

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

1 Ответ

0 голосов
/ 30 декабря 2018

Используйте класс друга, это класс, который был объявлен как друг (с ключевым словом friend) в другом классе.Он может получить доступ к закрытым и защищенным членам другого класса.Полезно разрешить определенному классу получать доступ к закрытым членам другого класса.Пример:

ах

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);
}

bh

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...