@User700

Как привести к строке по умолчанию?

#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* работает.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@User700 Автор вопроса
Значит неявно нельзя
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@byreoil
Нужно явно преобразовывать для оператора cout
#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 << (std::string)a << '\n';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы