I really need some help. My << operator in my class does not work, but i don't know why. I get errors like: "function text skipped" and "too many parameters". The Print()-function works. But the operator << is the problem.
int main(){
Set<int> s;
s.Add(1);
s.Add(9);
cout << s;
}
template <typename T>
class Set {
public:
//Hinzufügen eines Elements
bool Add(T const &x) { return mSet.insert(x).second; }
//Entfernen eines Elements
bool Remove(T const &x) { return mSet.erase(x) > 0; }
//Prüfen, ob Wert enthalten ist
bool Contains(T const &x) { return mSet.count(x) > 0; }
//Ausgabe auf einen Stream
void Print(std::ostream &out) const{
std::for_each(mSet.begin(), mSet.end(), [&out](const T elem) { out << elem << "\n"; });
}
//ruft einfach Print auf
std::ostream& operator<<(std::ostream& out, const Set<T> & obj)
{
obj.Print(out);
return out;
}
private:
std::set<T> mSet;
};
Is anyone able to fix the problem? I'm really despairing...