Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在类的不同实例中共享的字符串变量 我使用VisualStudioExpress 2013,并且是新的C++(虽然我对java有很好的理解,但这个问题让我难堪)。_C++ - Fatal编程技术网

在类的不同实例中共享的字符串变量 我使用VisualStudioExpress 2013,并且是新的C++(虽然我对java有很好的理解,但这个问题让我难堪)。

在类的不同实例中共享的字符串变量 我使用VisualStudioExpress 2013,并且是新的C++(虽然我对java有很好的理解,但这个问题让我难堪)。,c++,C++,“Dialogue”类中的“text”变量似乎与其其他实例共享相同的值 我的意思是,在控制台中,dialogue.Print()的两个输出“Then return!” //Main Class int main() { Dialogue dialogue1("Okay..."); Dialogue dialogue2("Then give it back!"); dialogue1.Print(); dialogue2.Print(); } 注:这些类别是分开

“Dialogue”类中的“text”变量似乎与其其他实例共享相同的值 我的意思是,在控制台中,dialogue.Print()的两个输出“Then return!”

//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;
}
//对话类”
#包括“对话.h”
#包括
#包括
使用名称空间std;
字符串文本;
对话:对话(字符串对话)
{
文本=对话;
}
对话::~Dialogue()
{
}
void对话::Print()
{

不能将文本定义为全局变量

string text;
因此,同一个变量被反复使用

在类定义中将其定义为成员变量(我假设在dialogue.h中):


当你从java背景中来时,你必须考虑到C++中的爪哇不同,你可以定义类外存在的东西。这样你不仅可以在类中拥有静态变量(像java),而且你也可以有完全全局的变量或者只与名字空间相关。据我所知,你不能在java中这样做。


这就是代码中发生的情况。您的
std::string text
不是定义为类对话的成员,而是在类对话之外,因此它基本上是一个全局变量,因此您是对的,它只存在一次,而不是每个对话实例。如果您进入对话的类定义(Dialogue.h)它将按你的预期工作。

你的代码是写两次全局变量…<代码>主< /C> >不是一个类,它是一个函数。不像java,函数和数据可以在C++中的类外(命名空间中,在你的例子中在全局命名空间中)存在。谢谢你的回复,它非常有帮助。只是修复它。
class Dialogue { 
...
    string text;
...
};