missing type specifier - int assumed. Note: C++ does not support default-int //owca.h 16
syntax error: missing ',' before '*' //owca.h 16
Masz okrężne include'y - GrupaPasterzy.cpp include'uje GrupaPasterzy.h, który include'uje ObjectFactory.h, który include'uje Owca.h, który potrzebuje już zdefiniowanego ZoorganizowanaGrupaPasterzy - ale go jeszcze nie ma.
Tak naprawdę nie potrzebujesz tego include'a w Owca.h, wystarczy foward deklaracja klasy ZoorganizowanaGrupaPasterzy.
std::unique_ptr<Owca,std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': cannot convert argument 1 from 'Object *' to 'std::nullptr_t //xmemory0 881
Jak głębiej poklikasz, zobaczysz, że błąd jest w
Object* x = ObjectFactory::create(linia);
lista.emplace_back(x);
// `lista` to std::list<std::unique_ptr<Owca>> lista;
Nasuwa się pytanie: jeśli wiesz jako fakt, że `x` będzie Owcą, po co używasz generycznej fabryki tworzącej obiekt dowolnej podklasy Object?
Jeśli nie wiesz, powinieneś albo przechowywać Object w liście, albo sprawdzać w kodzie, że faktycznie `x` jest obiektem klasy `Owca` (używając dynamic_cast).
(boczne pytanie: czemu std::list, a nie std::vector?)