myclass
класс C++, записанный мной и когда я пишу:
myclass x;
cout << x;
Как я произвожу 10
или 20.2
, как integer
или a float
значение?
это очень просто, просто реализуйте:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
Вам нужно вернуть ссылку на os, чтобы связать вывод (cout << foo << 42 << endl)
Как правило, путем перегрузки operator<<
для вашего класса:
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
Вам нужно перегрузить оператор <<
,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
Тогда, когда вы делаете cout << x
(где x
имеет тип myclass
в вашем случае), он будет выводить то, что вы ему сказали в методе. В приведенном примере это будет член x.somevalue
.
Если тип члена не может быть добавлен непосредственно к ostream
, то вам нужно будет перегрузить оператор <<
для этого типа, используя тот же метод, что и выше.