#include <iostream>
#include <string>
class A {
private:
std::string s = std::string("hello");
public:
operator std::string& () {return s;}
//operator const char* () {return s.c_str();}
};
int main() {
A a;
std::cout << a << '\n';
}
Если не оставить operator const char*, то "no known conversion for argument", хотя конверсия в std::string& определена. Может быть не определен оператор вывода для std::string? Изменение типа на тип без ссылки или на константную ссылку не помогает. Хотя при operator const char* работает.