gpt4 book ai didi

c++:如何将变量的值从一个类传递到另一个类?

转载 作者:行者123 更新时间:2023-11-30 04:16:00 24 4
gpt4 key购买 nike

我有一个类“A”,它从应用程序的 GUI 中获取变量值。让我们说这些变量之一是“X”。然后,在另一个类“B”中,我想调用这个“X”并将它的值传递给另一个函数。

我所做的是在类“B”中创建一个名为“objectA”的类“A”的对象,然后调用“X”的值如下:

// class A:
void classA::function1(int gui_value){
x= gui_value;
}

然后在另一个类中:

//class B:
void classB::run(){
.
.
function2(/* I need to pass x here */);
.
.
}

函数和 x 都在头文件中正确定义。

我所做的是在头文件中创建了一个 classA 的对象(让我们说:objectA),并使用“objectA”调用“classB”中“function2”中“x”的值,如下所示:

//class B:
void classB::run(){
.
.
function2(objectA->x);
.
.
}

假设“x”值等于“5”,当我在 function2 中调试“x”的值时,每次调试时它都会给我随机数。所以,我只是猜测这些随机值已经存在于内存中,这意味着“X”的值没有被正确传递。

我认为,虽然创建了对象,但它每次都会创建一个变量“x”的新实例。即:不是从 classA 中获取“x”的值,它只是创建一个 classA 的对象及其所有变量。

我的问题是如何在不创建其变量的新实例的情况下将在 classA 中获得的“x”的值直接传递给 classB?


更新:

感谢 doctorlove 的 回答,我的代码现在可以正常工作了。我的问题是在创建“objectA”后对其进行初始化并为其赋值。我正在做的是创建对象并将其直接传递到“classB”中。这就是为什么我得到随机值的原因,因为它只是一个新对象,在创建时在内存中具有任何值。

最佳答案

不清楚您要做什么。如果你有这样的事情......

class A
{
private:
int X;//ignoring any thing about encapsulation for now
};

class B
{
//...
public:
void DoSomething()
{
A objectA;
//makes objectA another A each time we get here, with X uninitialised
//use objectA.X which has random numbers in
}

};

这将与您描述的问题类似。如果您改为将 objectA 设为成员并正确初始化它,它可能会执行您想要的操作。和以前一样使用 A 类

class B
{
//...
private:
A objectA;
public:
B()
{
objectA.X = 42;
}
void DoSomething()
{
//use member objectA.X
}

};

编辑很明显,在我的示例中,我无处不在地提取了 42。如果您有来自 gui 的合理值,请将其发送给 B 的构造函数。如果它发生变化,您将需要引用它。

explicit B(int gui_value)
{
objectA.X = gui_value;
}

编辑2如果您在其他地方有一个现有的 objectA,则将 that 传递给构造函数

explicit B(const A & otherA)
: objectA(otherA)
{
}

如果那不可能,则您的设计需要改进。没有任何代码可供查看,我无能为力。

关于c++:如何将变量的值从一个类传递到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com