Outside Class definition.
std::ostream& operator<<(std::ostream& os, const QualifierEnum qe) {
switch(qe) {
case QualifierEnum::Pass: os << ""; break;
case QualifierEnum::Fail: os << "-"; break;
case QualifierEnum::SoftFail: os << "~"; break;
case QualifierEnum::Neutral: os << "?"; break;
}
return os;
}
Within a Class definition.
Header File
class Sample {
private:
...
public:
friend std::ostream& operator<<(std::ostream& os, Qualifier const &qualifier);
}
Here we use friend
to prevent the compiler from complaining about the number of arguments.
Source File
std::ostream& operator<<(std::ostream& os, Qualifier const& qualifier) {
if (qualifier.is_pass()) return os << "";
return os << static_cast<char>(qualifier._value);
}