如何正确覆盖文字运算符?

How to correctly override literal operators?

好的,所以我自己制作了 class 并且重载了一个运算符 ""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) {

好的,所以在问这个问题之前,我一直对某些事情感到困惑。因为我在 class 内添加了其他运算符覆盖,所以我认为我也应该在 class 内添加 operator"" s。但显然,事实并非如此。

我保留这个只是作为对@user0042 给我的答案的参考。

这就是我的问题所在。