字符串变量在不同的类实例中共享

时间:2014-12-13 20:33:45

标签: c++

我正在使用visual studio express 2013并且是C ++的新手(虽然我对Java有很好的理解,但这个问题让我感到难过)。

" text" "对话"中的变量class似乎与它的其他实例共享相同的值 我的意思是这两个对话.Print()的输出"然后给它回来!"在控制台中。

//Main Class
int main()
{
    Dialogue dialogue1("Okay...");
    Dialogue dialogue2("Then give it back!");

    dialogue1.Print();
    dialogue2.Print();
}

注意:这些类是单独的

//The "Dialogue Class"
#include "Dialogue.h"
#include <iostream>
#include <string>

using namespace std;

string text;

Dialogue::Dialogue(string dialogue)
{
    text = dialogue;
}

Dialogue::~Dialogue()
{

}

void Dialogue::Print()
{
    cout << text << endl;
}

2 个答案:

答案 0 :(得分:2)

当来自Java背景时,你必须考虑到与C ++中的Java不同,你可以定义在类之外存在的东西。因此,您不仅可以在类中使用静态变量(例如在Java中),还可以使用完全全局变量或仅与命名空间相关联的变量。据我所知,你不能用Java做到这一点 你的代码会发生什么。你的std::string text被定义为不是你的类对话的成员,而是在它之外,所以它基本上是一个全局变量,所以你是对的它只存在一次而不是每个Dialog实例。如果您进入对话(dialog.h)的类定义,它将按预期工作。

答案 1 :(得分:0)

您将文本定义为全局变量。

string text;

因此,一次又一次地使用相同的变量。

在类定义中将其定义为成员变量(我想在dialog.h中):

class Dialogue { 
...
    string text;
...
};