Вероятно, для этого есть очень простое решение, но сейчас оно меня пугает. Итак, я пишу классы C ++ для следующих целей:
Header.h:
#pragma once
//...
class arrayObj
{
private:
// some variables...
public:
//constructor, destructor, getters, etc...
friend void objManager::foo();
};
//...
class objManager
{
private:
//...
std::vector<std::shared_ptr<arrayObj>> array;
public:
void foo();
//other methods...
};
Теперь, как есть, мой компилятор не найдет объявление класса objManager (или функцию-член), объявленное для включения друга. Однако с объявлением objManager, помещенным перед arrayObj, arrayObj больше не объявляется для внутреннего вектора общих указателей. Есть ли способ перенаправить объявление objManager в этом случае или иным образом решить эту проблему, не разбирая objManager на отдельные классы?