gpt4 book ai didi

c++ - 从成员类访问父类成员

转载 作者:行者123 更新时间:2023-11-28 05:50:36 25 4
gpt4 key购买 nike

为了让我的问题更好理解一些代码:

class parent{
public:
int number;
string getUnit();
myClass myMember;
}

class myClass{
public:
int counter;
string getParentUnit();
}

现在我想让我的 getParentUnit() 做类似的事情

string myClass::getParentUnit(){
retrun parent.getUnit();
}

我知道我可以修改 myClass 以在构造函数中获取 parentthis 指针并将其保存以备后用,但我有几个类彼此的“内部”,例如:

class a{
<...>
b B;
<...>
}

class b{
<...>
c C;
}

class c{
<...>
d D;
<...>
}

d 类中,我需要访问 a 类中的内容。

因此,如果有更好的方法,我不想更改所有内容以获得向后引用。

问候语国家物联网

最佳答案

这是一个常见的问题:有一个应用程序(对应类a的对象),然后抽象层次较低的对象需要访问应用程序上下文(的成员)一个).

人们经常应用简单但问题重重的全局变量解决方案,使整个应用程序代码都可以访问 a。请注意:这意味着 d 不可测试,因为您必须设置整个应用程序才能使 d 正常运行。如果依赖项不影响 d 的行为,而只是添加边际副作用,例如记录器,那么它可能是可以接受的,因为您仍然可以测试 d 的行为> 没有记录器。

做到这一点的简洁方法是让每个对象在构造函数或 setter 函数中显式获取其依赖项。这现在需要做更多的工作,但它创建了可维护的代码,因为每个类的 API 都明确说明了依赖项是什么。此外,每个类现在都可以独立测试。

class A {
public:
A(Params p) : b(p) {}
private:
Params params;
B b;
};

class B {
public:
B(Params p) : C(c) {}
private:
Params params;
C c;
};

class C {
public:
C(Params p) : params(p) {}
private:
Params params;
};

我推荐观看https://www.youtube.com/watch?v=RlfLCWKxHJ0 ,其中对此进行了很好的解释。

关于c++ - 从成员类访问父类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35337737/

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