В операторе второй параметр не является константной ссылкой
ostream& operator<<(ostream& outputStream, Dog& dog)
{
outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
return outputStream;
}
, а в функции-члене используется постоянная ссылка на объект.
int FileRepository::addDog(const Dog& dog)
Объявите оператор как
ostream& operator<<(ostream& outputStream, const Dog& dog)
{
outputStream << dog.name << ", " << dog.breed << ", " << dog.birthDate << ", " << dog.numberOfShots << ", " << dog.photo << ", " << '\n';
return outputStream;
}