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