#include class A; class B; class A { std::vector list_of_b; public: A(); void MethodOfA(); }; class B { long long element; public: B(); B* AddOne(); }; A::A() {} void A::MethodOfA() { std::vector _temp; _temp.reserve(list_of_b.size()); std::for_each(list_of_b.begin(), list_of_b.end(), [_temp](B& pointer_to_b) {_temp.push_back(pointer_to_b->AddOne());}); } B::B() {element = 1;} B* B::AddOne() { B* new_element = new B(); ++(new_element->element); return new_element; }