2017-12-09 13 views
-2

좋아, 그래서 내 자신의 클래스를 만들었고 나는 연산자를 오버로드 했어 ""s 그래서 내 문자열 형성을 위해 사용할 수있다.리터럴 연산자를 올바르게 재정의하는 방법은 무엇입니까?

그러나 컴파일 할 때 오류가 발생하며 어떤 의미인지 알 수 없습니다. 누군가 그것의 의미와 그것을 고치는 방법을 설명 할 수 있습니까?

내 코드 :

PString operator"" s(const char* text, std::size_t len) { 
    return PString(std::string(text, len)); 
} 

내 오류 :

error: ‘PString PString::operator""s(const char*, std::size_t)’ must be a non-member function 
PString operator"" s(const char* text, std::size_t len) { 
+2

실제로 오류 메시지에 대해 명확하지 않은 점은 무엇입니까? 리터럴 연산자를 클래스의 일부로 재정의하려고 시도하는 것 같습니다. – user0042

+0

내가 무엇을 의미하는지 모르겠다는 의미에서 '비회원 함수 여야한다.'라는 오류 메시지의이 부분이 무엇인지 - 이른바 비회원은 무엇입니까? –

+1

이것은 반드시 만들어야한다는 것을 의미합니다. 'PString' 클래스 외부의 자유 함수. – user0042

답변

0

좋아, 내가 뭔가에 대해 혼동 한이 질문을 너무 앞서. 클래스 내부에 다른 연산자 재정의를 추가 했으므로이 클래스에 operator"" s을 추가해야한다고 생각했습니다. 하지만 분명히 그렇습니다.

나는이 답변을 @ user0042에게 준 참조로 보관하고 있습니다.

이것은 나를 위해 문제를 해결 한 것입니다.