1

我用 C++ 编写了一个带有两个文件的程序。

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;
}

var.hpp

#ifndef __VAR_H__
#define __VAR_H__

#include <string>

namespace YU
{
    int age;
    string name;
}

#endif

当我编译它时,它出错了。

错误的信息是:

In file included from main.cpp:1:0:

var.hpp:9:5: Error: ‘string’ is not a type name

我不知道为什么,我有include <string>头文件,但它仍然不起作用。

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

谢谢你!

4

3 回答 3

4

问题是stringin的命名空间var.hppstringstd命名空间,但你没有告诉编译器。您可以通过输入来修复它,但以下是更好using namespace std;var.hpp解决方案,因为它不会将全局命名空间与来自 的其他内容混淆std

#ifndef __VAR_H__
#define __VAR_H__

#include <string>

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

#endif
于 2012-04-21T04:13:16.843 回答
1

或者你可以使用

using std::string;

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

于 2012-04-21T07:07:51.080 回答
1

using namespace std;在 .cpp 文件中有,但它位于 .cpp 的包含之后var.h。如果你要这样写标题,你也应该把using namespace std;标题放进去。

于 2012-04-21T04:13:29.577 回答