使用 std::string::npos 时出错

Get error on using std::string::npos

在 C++ 上,我收到以下错误消息:

error: ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ is not a namespace or unscoped enum

这一行:

  using std::string::npos;

这是怎么回事? 我正在使用 2017 标准的 g++ (-std=c++17)

我包含了 header。

再读一遍错误。

它告诉你:"unless your are trying to alias a namespace or an unscoped enum, I will cowardly refuse to have anything to do with this using clause"。

也就是说:不要试图定义aliases for static constants,你会没事的。

引用的参考文献说:

Using-declarations can be used to introduce namespace members into other namespaces and block scopes, or to introduce base class members into derived class definitions.

没有提到 "introducing static constant members"。

'npos' 不是命名空间也不是枚举。它是一个静态常量成员。

using std; 表示 "After this command I can write string instead of std::string"