"Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?

"Class1" class has "Class2" object as a private data member. How can i refer to "Class1" object through "Class 2" function?

本文关键字:对象 Class1 Class 何通过 函数 引用 Class2 数据成员      更新时间:2023-10-16

Class1.h:

include "Class2.h"
class Class1
{
public:
Class1();
int getNum();
Class2 getClass2Object();//returns a Class2 object 
protected:
private:
int num;
Class2 class2Object;//Class2 object as a data member of Class1
};

类1.cpp:

include "Class1.h"
Class1::Class1()
{
num = 1;
}
int Class1::getNum(){return num;}
Class2 Class1::getClass2Object(){return class2Object;}

类2.h:

accessNumThroughClass2()函数,我需要在其中引用具有此Class2对象作为数据成员的Class1对象

class Class2
{
public:
Class2();
void accessNumThroughClass2();
protected:
private:
};

第2类.cpp:

在这里,我想引用将Class2对象作为数据成员的Class1对象,以便 可以访问num数据成员以打印其值。我该怎么做?

Class2::Class2()
{
//ctor
}
void Class2::accessNumThroughClass2(){
//What do I do here?
}

主.cpp:

#include <iostream>
using namespace std;
int main()
{
Class1 class1Object();
class1Object.getClass2Object().accessNumThroughClass2(); //Here make it print the value of num
return 0;
}

通过对前向声明进行一些研究,我实际上可以在定义之前在Class2.h内部声明Class1Class2然后只使用指向Class1对象的指针。这解决了我的问题。感谢您的帮助!

在 Class2 中创建一个包含 Class1 实例的成员(例如调用它父级(。在 Class2 构造函数中,接收 Class1 的实例以初始化父成员。

在 Class1 构造函数中,使用 Class2 的实例初始化 class2Object,并将其传递给 Class2 构造函数。

像这样:

类2.h

class Class2
{
public:
Class2();
void accessNumThroughClass2();
protected:
private:
Class1 parent;
};

类2.cpp

Class2::Class2(Class1 parent)
{
this.parent = parent;
}
void Class2::accessNumThroughClass2(){
return parent;
}

类1.cpp

include "Class1.h"
Class1::Class1()
{
num = 1;
class2Object = Class2(this);
}
int Class1::getNum(){return num;}
Class2 Class1::getClass2Object(){return class2Object;}