如何正确覆盖文字运算符?
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 给我的答案的参考。
这就是我的问题所在。
好的,所以我自己制作了 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 给我的答案的参考。
这就是我的问题所在。