C++ 类的公共变量不维护其值,并且在另一个类中不可访问

C++ 类的公共变量不维护其值,并且在另一个类中不可访问,c++,class,public,C++,Class,Public,我有一个Class1的项目,其公共函数tempfunc定义为: public: int tempvar; public: int tempfunc(int temparg) { if (temparg>0) { tempvar=temparg; } return tempvar; } 现在在Class1中,首先我用tempfunc500调用tempfunc,它设置tempvar=500。当我尝试在同一个类中使用tempvar时,它的值不是5

我有一个Class1的项目,其公共函数tempfunc定义为:

public:
int tempvar;
public:
int tempfunc(int temparg)
{
    if (temparg>0)
    {
        tempvar=temparg;
    }
    return tempvar;
}
现在在Class1中,首先我用tempfunc500调用tempfunc,它设置tempvar=500。当我尝试在同一个类中使用tempvar时,它的值不是500

其次,在调用Class1的tempfunc之后调用的另一个Class2中,我使用以下代码:

int tempvar2=Class1().tempfunc(0);
我希望tempvar2的值是500,但它是一个虚拟值


在执行tempfunc之后,我应该如何从Class1中获取Class2中的tempvar值。

我将使用我的灵力,并尝试找出你做错了什么。从你在第二个问题中所说的话,我猜你在做这样的事情:

class Class1
{
 public:
  int temp;
  void tempfunc(int x) { temp = x; }
  void someOtherFunction() { std::cout << temp << std::endl; }
};

int main()
{
  Class1().tempfunc(5);
  Class1().someOtherFunction(); // Prints some garbage value, not 5
}
这将创建一个Class1类型的对象,并将其命名为obj。然后我们可以调用该命名对象上的函数

编辑后:将tempfunc声明为返回int,但不从中返回任何内容。你需要:

int tempfunc(int temparg)
{
    if (temparg>0)
    {
        tempvar=temparg;
    }
    return tempvar;
}

给我们看一下您的代码,然后我们会告诉您:你应该在使用变量之前初始化它们。确保在构造函数中初始化变量,即使使用0或null。1。发布代码2。从你的例子Class2.temp来看,我猜temp可能是一个非静态成员,你每次都在不同的实例上访问它。投票结束:这个问题相当于我住在某个城市以外的某个地方,在一辆汽车经过后,没有告诉你城市,我所在的地方天气如何?我已经更新了这个问题。很抱歉最初没有代码:即使返回tempvar,它也无法工作。其次,我通过Class1中的另一个函数调用tempfunc500。@omnetuser99问题结束了。重新开始。发布另一个问题,这次请正确回答。向我们展示您的类、使用该类的代码以及您获得的输出。
int tempfunc(int temparg)
{
    if (temparg>0)
    {
        tempvar=temparg;
    }
    return tempvar;
}