在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;报头中。
答案 0 :(得分:2)
再次阅读错误。
它告诉你:“除非你试图为命名空间或无范围的枚举设法别名,否则我将怯生生地拒绝与这个using
子句有任何关系”。
也就是说:不要试图为aliases定义static constants,你会没事的。
引用的参考文献说:
使用声明可用于将命名空间成员引入其他命名空间和块范围,或者将基类成员引入到派生类定义中。
没有提及“引入静态常量成员”。
答案 1 :(得分:2)
'npos'不是命名空间也不是枚举。它是一个静态常量成员。
using std;
表示“在此命令之后我可以写string
而不是std::string
”