&引用;字符串不是一种类型";在命名空间中 我用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,并且不会从全局名称空间获取所有内容