Je me demande comment utiliser std :: copy pour utiliser l'opérateur de surcharge de ma classe. Par exemple, pour imprimer vecteur de type int on peut utiliser quelque chose comme çaStd :: copy et std :: ostream_iterator pour utiliser la fonction de surcharge pour imprimer des valeurs
std::vector<int> vec{ -1, 4, 70, -5, 34, 21, 2, 58, 0 , 34 , 27 , 4 };
std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
Mais dire que j'ai opérateur de classe des employés et la surcharge < <
class Employee
{
public:
Employee(const string _name, const string _last, const int _sal):
name(_name),
lastname(_last),
salary(_sal)
{
}
friend ostream& operator<<(ostream&os, Employee&obj)
{
return os << obj.name << " "<< obj.salary;
}
private:
std::string name;
std::string lastname;
int salary;
};
Alors comment pourrais-je utiliser std :: copie utiliser ostream_iterator pour imprimer le nom de l'exemple des employés et le salaire
int main()
{
std::vector<Employee> staff
{
{"tim", "sim", 1000 },
{"dave", "ark", 2000 },
{"kate", "Greg", 2000 },
{"miller", "jane", 1000 },
{"wht", "Up", 2000 }
};
std::copy(begin(staff), end(staff), std::ostream_iterator<Employee>(cout, " ")); // How to use this line ???
return 0;
}
Lorsque je tape dessus de la ligne, je suis erreur du compilateur Opérandes invalides à l'expression binaire
Veuillez fournir un [MCVE] si nécessaire. –
C'est un code minimal qui peut causer des problèmes. Je ne sais pas sérieusement ce que plus d'informations je peux fournir. Tout ce que je veux faire est d'utiliser std :: copy pour imprimer le salaire et le nom. Je peux utiliser pour la boucle pour cela mais je suis intéressé à savoir comment faire avec std :: copy. – samprat
_ "C'est un code minimal qui peut produire un problème" _ [Vraiment ??] (http://coliru.stacked-crooked.com/a/b0006f46eb41dec2) –