내가 한 [표준 : : char_traits이
#include <string>
class Foobar
{
public:
Foobar();
Foobar(const Foobar&);
~Foobar();
operator std::string() const;
};
을 시도 이 같은 :
#include <iostream>
#include <sstream>
#include "Foobar.hpp"
int main()
{
Foobar fb;
std::stringstream ss;
ss << "Foobar is: " << fb; // Error occurs here
std::cout << ss.str();
}
내가 명시 적으로 운영자는 foobar에 대한 < <를 작성해야합니까
// C++ 소스 파일? FooBar가 iostream에 배치되기 전에 문자열로 변환되고 std :: string에 이미 연산자 < <이 정의되어 있기 때문에 필요한 이유가 표시되지 않습니다.
왜이 오류가 발생합니까?. 내가 뭘 놓치고 있니?
[편집]을
난 그냥이, 나는이 선을 변경 한 경우 오류가 발생하는 것을 발견 : 그것은 성공적으로 컴파일
ss << "Foobar is: " << fb.operator std::string();
. 어 ...! 왜 컴파일러가 자동 변환을 할 수 없습니까 (Foobar -> string)?
위의 구문을 사용하지 않아도되는 '최상의 방법'은 무엇입니까?
http://stackoverflow.com/q/6677072/560648? –