使用std :: string :: npos

时间:2016-11-18 12:10:41

标签: c++ g++ using

在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)

我包括&lt;字符串&gt;报头中。

2 个答案:

答案 0 :(得分:2)

再次阅读错误。

它告诉你:“除非你试图为命名空间或无范围的枚举设法别名,否则我将怯生生地拒绝与这个using子句有任何关系”。

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

引用的参考文献说:

  

使用声明可用于将命名空间成员引入其他命名空间和块范围,或者将基类成员引入到派生类定义中。

没有提及“引入静态常量成员”。

答案 1 :(得分:2)

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

using std;表示“在此命令之后我可以写string而不是std::string