Добрый вечер. Мне нужно из класса B получать доступ к методам класса A. Имеется вот такой код:
#include <vector>
class B;
class A
{
public:
std::vector<B*> _b;
void setup()
{
for (auto it = _b.begin(); it != _b.end(); it++)
{
(*it)->setPtr(this);
}
}
};
class B
{
public:
A *_a = nullptr;
void setPtr(A *a) { *_a = *a; }
};
int main()
{
A a;
}
Компилятор выдает ошибки:
error C2027: использование неопределенного типа "B"
error C2227: выражение слева от "->setPtr" должно указывать на тип класса, структуры или объединения либо на универсальный тип
Как с таким бороться, если менять классы местами нельзя
Вынесите реализацию метода отдельно, после объявлений классов.
#include <vector>
class B;
class A
{
public:
std::vector<B*> _b;
void setup();
};
class B
{
public:
A *_a = nullptr;
void setPtr(A *a) { *_a = *a; }
};
void A::setup()
{
for (auto it = _b.begin(); it != _b.end(); it++)
{
(*it)->setPtr(this);
}
}
int main()
{
A a;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники