&引用;字符串不是一种类型";在命名空间中 我用C++编写了一个程序,有两个文件。

&引用;字符串不是一种类型";在命名空间中 我用C++编写了一个程序,有两个文件。,c++,string,namespaces,C++,String,Namespaces,main.cpp #include "var.hpp" #include <iostream> using namespace std; using namespace YU; int main() { string god = "THL"; age = 10; cout << age << endl; cout << god << endl; return 0; } 当我编译它时,它出错了

main.cpp

#include "var.hpp"
#include <iostream>
using namespace std;
using namespace YU;

int main()
{
    string god = "THL";
    age = 10;
    cout << age << endl;
    cout << god << endl;
    return 0;
}
当我编译它时,它出错了

错误的信息是:

包含在main.cpp:1:0:

var.hpp:9:5:错误:“string”不是类型名

我不知道为什么,我有
include
head文件,但它仍然不起作用

我写这段代码只是为了练习,不是为了工作


谢谢大家!

问题在于
var.hpp
string
的命名空间
string
std
名称空间,但您没有告诉编译器这一点。您可以通过使用namespace std放置
来修复它
var.hpp
中,但以下是一个更好的解决方案,因为它不会将全局名称空间与
std
中的其他内容混在一起:

#ifndef __VAR_H__
#define __VAR_H__

#include <string>

namespace YU
{
    int age;
    std::string name;
}

#endif
\ifndef\uu VAR\H__
#定义变量__
#包括
王宇
{
智力年龄;
std::字符串名;
}
#恩迪夫

问题在于
var.hpp
字符串的命名空间
string
std
名称空间,但您没有告诉编译器这一点。您可以通过使用namespace std放置
来修复它
var.hpp
中,但以下是一个更好的解决方案,因为它不会将全局名称空间与
std
中的其他内容混在一起:

#ifndef __VAR_H__
#define __VAR_H__

#include <string>

namespace YU
{
    int age;
    std::string name;
}

#endif
\ifndef\uu VAR\H__
#定义变量__
#包括
王宇
{
智力年龄;
std::字符串名;
}
#恩迪夫

您有
使用名称空间std
在.cpp文件中,但它位于包含
var.h
之后。如果您打算这样编写头,那么应该使用namespace std放置
也在标题中。

您有
使用名称空间std
在.cpp文件中,但它位于包含
var.h
之后。如果您打算这样编写头,那么应该使用namespace std放置
也在标题中。

您也可以使用

using std::string;

这避免了必须在每个字符串前面键入std::string,并且不会从全局名称空间中获取所有内容。

您也可以使用

using std::string;
这避免了必须在每个字符串前面键入std::string,并且不会从全局名称空间获取所有内容