2017-12-09 7 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が私に与えた回答への参考にしておきます。

これは私の問題を解決したものです。

関連する問題