设置一个类的值,另一个类
Set a value of a class from another class
我正在尝试使用此代码段设置另一个类的类成员的值。这是我尝试工作的代码示例
class A
{
private:
int a;
public:
A()
{
a = 0;
}
A(int val)
{
a = val;
}
int GetA()
{
return a;
}
void SetA()
{
a = 290;
}
};
class B
{
B(){};
void SetB()
{
A a;
a.SetA();
}
};
int main(){
A a;
B b;
b.SetB();
cout << b.GetA();
}
我怎样才能使这段代码290
.我目前打印出 0
SetB
您的 A
变量是一个临时变量,当函数返回时会被销毁。
它在你的代码段中编写的方式,你的代码不会编译,因为B
没有方法GetA()
。 从您的用例(main()
中的代码)中,我怀疑您希望B
从A
继承:
class B : public A
{
public:
B() {];
void SetB()
{
SetA();
}
};
虽然这没有多大意义,因为在这种情况下,您可以直接拨打b.SetA()
。 或者,您希望将类型为 A
的对象作为 B
的成员:
class B
{
public:
void SetB()
{
a.SetA();
}
int GetA()
{
return a.GetA();
}
private:
A a;
};
但是很难从你的代码片段中看出你实际想要实现的目标。
此外,您可能希望const
Get…()
方法。
如果你想实现我认为你想要实现的目标,那么你就快到了,只是你正在创建两个版本的 A,一个在主堆栈上,另一个是 B::SetA() 中的临时版本。
尝试将 A 作为引用参数传递给 B,以便只有一个版本的 A。
void SetB(A& a)
{
a.SetA();
}
那么你的调用代码将是:
A a;
B b;
b.SetB(a);
cout << a.GetA();
或者,在 B 的构造函数中传递 a,并将 A 作为引用成员存储在 B 中;
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C ++读取用户输入的字符一个一个符号
- 循环速度要比一个一个一个一个
- 计算一个*一个没有溢出的模数n