0

嘿,我想在故事情节中使用函数 wolves 变量,我正在尝试这样做:

"\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");

但是 Wolves().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;

将输出“名字是:鲍勃”

除非您通过引用传递值,否则 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 回答