我目前在类ID
中定义一个字符串Return_Class
,以便我可以使用" namespace。" (我在Qt工作。)
当我完全放置using namespace std;
我的代码功能时,当我删除using namespace std;
并将我的课程编辑为...
class Return_Class : public QString
{
public:
static std::QString ID;
};
...我的代码收到错误消息"命名空间中的QString" std"没有命名类型"
我知道使用std ::被认为是更好的做法,但我很困惑为什么它不适用于我的情况?我的字符串语法错了吗?感谢
答案 0 :(得分:1)
您使用的是QString
,而QString
并非来自std namespace
。当您直接键入std::QString
时,您会收到错误,因为QString
中未定义std namespace
,但当您输入using namespace std
时,您可以使用std namespace
中的所有内容不直接键入std
(在该命名空间中定义的内容),而不是QString
,因为QString
的定义不存在。
答案 1 :(得分:0)
Qstring不是命名空间的一部分,因此您收到错误。
是的,你确定要使用static std::QString ID;
吗?
还是 static std::string ID;
关于使用“:: std”或“using namespace std”之间的区别
使用“:: std”总是更好,因为如果你使用两个不同的命名空间,它们都有一个名为func()
的函数。这将是模棱两可的。
还有一点需要注意的是,你永远不应该把
using namespace std
在头文件中,因为它可以传播到包含该头文件的所有文件,即使他们不想使用该命名空间。