0

ねえ、ストーリーラインで関数オオカミ変数を使用したいのですが、これをやろうとしています:

"\nYou awake on a beach to the sound of"<< Wolves().name; " starving and blood hungry," 
        "\nThere is a Rock on the ground.  You pick it up";
        inventory.push_back("Rock");

でもオオカミ().name; タイトル通りのエラーが出ました。なぜ私はこれを行うことができないのですか?

関数 Wolves のコードは次のとおりです。

void Wolves()
{
    string name = "Wolves";
    int health = 20;
    hitPoints() +1;
}
4

3 に答える 3

1

C++ の関数の外部から関数で定義された変数にアクセスすることはできませんが、クラスに変更することはできます。

class Wolves {
  public:
    string name;
    // ...

    Wolves(); // Constructor
    //...
}

それにアクセスするには、使用できます

Wolves wolve;
wolve.name = "whateverName"; // or set it in the constructor
cout << wolve.name << endl;
于 2012-10-07T16:15:56.027 に答える
1

そこで行ったことは、関数内にローカル変数を作成することです。関数が終了すると、それらは存在しなくなります。やりたいことは、Wolves クラスを作成し、パブリック メンバー変数を作成して、必要なことを行うことです。たとえば、

class Wolves {
    public:
        string name;
        int health;

        Wolves(string name, int a);
}

次に、メイン関数で、

Wolves w("Bob", 20);
cout << "The name is: " << w.name << endl;

「The name is: Bob」を出力します

参照によって値を渡さない限り、void 関数は実際には何もしません。void 関数を使用してオブジェクトを変更する場合は、次のようにする必要があります。

void Wolves(Wolves & wolfToChange)
{
    wolfToChange.name = "Bob";
}

そして、それはオブジェクトを直接変更します。

于 2012-10-07T16:21:09.050 に答える
0

という関数で "name" をローカル変数として宣言しましたWolves()が、参照していたコードは、関数Wolves()がアクセス可能なメンバーを持つオブジェクトを返すことを期待していますname。それがコンパイラが不平を言っている理由です。

あなたがコードを書いた方法は、Wolves が関数ではなく、クラスまたは構造体であるべきであることを示唆しています。

于 2012-10-07T16:14:34.270 に答える