Есть 2 решения.
Первое решение - создать шаблон.
template <typename T>
ostream& operator<<(const T& input) const
{
cout << "In Overloaded function1\n";
return (cout << input << endl);
}
Однако это приведет к печати a << str
и a << p
c
и 2.22
, что отличается от вашего исходного кода. что вывод 99
и 2
.
Второе решение - просто добавить перегруженную функцию для const char*
:
ostream& operator<<(int string)
{
cout << "In Overloaded function1\n";
return (cout << string << endl);
}
ostream& operator<<(const char* string)
{
cout << "In Overloaded function1\n";
return (cout << string << endl);
}
Это позволяет строкам C и всему, что можно преобразовать в int
, редактировать A <<
, но это все - он не будет "принимать все передаваемые типы данных".
Кстати, вы забыли return
ostream
.