c++如何从一个类中获取变量并将其放入另一个类,然后将其放入构造函数
c++ How do I get variables from a class and put it into another class, and put it into a constructor?
我有2个h和cpp文件。我想知道如何将Abe.h文件或Abe类中的变量调用到Bob.h或Bob类。请帮忙。
Abe.h
#include <iostream>
using namespace std;
#ifndef ABE
#define ABE
class Abe
{
private:
int num;
public:
Abe();
Abe(int);
void showNumber();
};
#endif // ABE
Abe.cpp
#include "Abe.h"
#include <iostream>
using namespace std;
Abe::Abe()
{
num=45;
}
Abe::Abe(int n)
{
num=n;
}
void Abe::showNumber()
{
cout<<num;
}
BOB.h
#include "Abe.h"
#include <iostream>
using namespace std;
#ifndef BOB
#define BOB
class Bob
{
private:
Abe a;
public:
Bob(Abe);
void showNum();
};
#endif // BOB
BOB.cpp
#include "Abe.h"
#include "Bob.h"
#include <iostream>
using namespace std;
Bob::Bob(Abe a1)
{
a=a1;
//^not sure what a=a1 is doing but if you could explain in simple terms or in deatil that would help.
}
void Bob::showNum()
{
//how do I display it here??
}
那么我如何从Abe类中获得"num"并在Bob类中使用它呢?请帮忙。非常感谢。
a=a1
将传递到Bob
的构造函数中的Abe
分配给Bob
的a
成员。使用更具描述性的变量名可能是个好主意,并且使用初始值设定项列表可以获得一些优化。示例:
Bob::Bob(Abe a1):a(a1)
{
}
既然Bob
有一个Abe
,它就可以。。。不要做任何事从安倍那里得到电话号码。Abe必须允许Bob
获取号码。为此,可以通过以下两种方式之一重新定义Abe
:
class Abe
{
private:
int num;
public:
Abe();
Abe(int);
void showNumber();
int getNumber()
{
return num;
}
};
现在Bob
可以
int number = a.getNumber();
或者(这是第二个,因为它是不太优选的选项,因为它紧密耦合Bob
和Abe
class Abe
{
friend class Bob;
private:
int num;
public:
Abe();
Abe(int);
void showNumber();
};
Bob
现在完全可以访问Abe
的内部,如果他想的话,真的可以把这个可怜的家伙搞砸。这不好。无论如何,Bob
现在可以了
int number = a.num;
Bob
可以读取num
,更改num
,将其设置为无可救药的坏值,并且通常是对Abe
的急动。Bob
是个好朋友。另一个缺点是Bob
现在需要知道Abe
在内部是如何工作的,如果Abe
的代码被更改,Bob
也必须更改。
Bob
构造函数中的赋值与任何其他赋值一样,它将数据从a1
复制到a
中,复制方式与以下代码相同:
int a1 = 6;
...
int a;
a = a1;
一旦初始化了Bob
类中的a
对象,就可以像调用任何其他对象一样调用a
的成员函数。但是,您不能访问私人成员。
一个解决方案是向Abe
类添加一个getter成员函数,该函数返回num
成员,类似
int Abe::getNumber() const
{
return num;
};
然后你可以像一样在Bob
类中使用它
std::cout << "the number is " << a.getNumber() << 'n';
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何为 std::vector 分配内存,然后稍后为某些元素调用构造函数?
- 如何在类中制作 2D 数组元素,然后在其构造函数中指定其维度?
- C++大括号初始值设定项作为参数调用不同的构造函数,然后预期
- 在构造函数中创建一个字符串数组,然后在主函数中使用它
- 如何将对象数组作为构造函数中的参数传递,然后将传递的数组复制到另一个数组(仍在构造函数中)
- 创建一个 const unique_ptr然后尝试从它 std::move 会给出与您尝试访问复制构造函数相同的错误
- 将复制构造函数超载与DELETE,然后调用C 子类的默认构造函数
- 如何将二维数组作为类中的私有变量,然后在构造函数中设置它
- 父类默认构造函数由用户然后通过C++输入
- 传递字符串指针然后检查构造函数/方法中的大小时出现问题
- 当我修改复制构造函数以执行一些奇怪的操作,然后按值将对象(该类)传递给函数时会发生什么
- 如何从一个类中获取变量并将其放入另一个类,然后将其放入构造函数
- c++如何从一个类中获取变量并将其放入另一个类,然后将其放入构造函数
- 如何使用GC_malloc,然后在c++中调用构造函数
- 如何将双精度向量传递给构造函数,然后在子类中访问其数据(在c++中)
- c++数据成员.目标:在构造函数中初始化,然后不管,将const工作在这里
- 子类调用基类构造函数,然后使用子类Arduino c++中基类的实例方法
- 为什么先调用基类构造函数,然后再调用派生类构造函数