Я пытаюсь перегрузить оператора < < на функцию. Я застрял в течение нескольких часов, пытаясь понять это. Я нашел много примеров, как это сделать в Ostream, но ни одна из них не была нацелена на мою конкретную проблему.Попытка перегрузки << функция класса
#include <iostream>
class foo
{
public:
foo& operator<< (foo& (*pf)(foo&))
{
return pf(*this);
}
foo& do_something_more(foo& os)
{
return os;
}
};
ostream& do_something(ostream& os)
{
os << "1." << "\n" << "2.";
return os;
}
int main()
{
foo a;
std::cout << do_something; // this works
a << do_something_more; // this do not
system("pause");
return 0;
}
Это один из примеров того, как я пытался это решить. Я получаю ошибку 'do_something_more': незарегистрированный идентификатор в этом.
Спасибо за помощь!
'do_something_more()' является функцией-членом 'foo' и вам нужен экземпляр для его вызова. –
Или сделайте его статическим и используйте 'a << foo :: do_something_more;' ... или просто не-член. – LogicStuff
Ничего подобного не имеет смысла. –