Ошибка C2207 при обращении к ссылке на объект, который находится в векторе
Проще показать код чем объяснить в чем проблема. Всю голову сломал!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Human;
class Team {
public:
vector<Human*> people;
void print_team() {
cout <<"Работник "<< people[0]->name;//Ошибка 2027 использование неопределенного типа "Human"
}
};
class Human {
public:
Human(string _n) {
name = _n;
}
void add_to_team(Team* t) {
t->people.push_back(this);
}
//private:
string name;
};
int main() {
setlocale(LC_ALL, "ru");
Team janitors;
Human vasya("Вася");
vasya.add_to_team(&janitors);
janitors.print_team();
}
Когда выполняю трассировку, данные в векторе есть. Но при попытке вывести их выдает 2027. Что я делаю не так?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Пытаетесь использовать сущности до объявления...
Откуда в вашем коде компилятору в этот момент знать, что у Human
есть член name
и что он собой представляет?
Делайте так:
class Team {
public:
vector<Human*> people;
void print_team();
};
class Human {
.....
};
void Team::print_team()
{
cout <<"Работник "<< people[0]->name;
}