1

私は2つのファイルを使って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

string問題は、 inの名前空間です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 namespace std;.cppファイルにありますが、。をインクルードした後に表示されますvar.h。このようにヘッダーを作成する場合は、ヘッダーも挿入する必要がusing namespace std;あります。

于 2012-04-21T04:13:29.577 に答える
1

代わりにあなたは使うことができます

using std::string;

これにより、すべての文字列の前にstd :: stringと入力する必要がなくなり、グローバル名前空間からすべてを取得する必要がなくなります。

于 2012-04-21T07:07:51.080 に答える