gpt4 book ai didi

c++ - 类变量将在基类之后初始化

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:37 25 4
gpt4 key购买 nike

我希望遇到一个简单的问题,我无法找到关于正在初始化的“变量”的具体答案。这是有问题的初始化列表:三角.cc

Triangle::Triangle(Vector _a, Vector _b, Vector s, Point o)
: a(_a), b(_b), Shape(o, new RectilinearAnimationStrategy(s, bBoxMaxX(), bBoxMinX(), bBoxMaxY(), bBoxMinY())){}

我知道您必须按照变量在类中定义的相同顺序初始化变量,但是如果您也在初始化一个对象,那么这种情况又如何呢?我需要在调用 Shape 之前显式初始化 ab 以便将正确的值返回给 RectilinearAnimationStrategy。我尝试的一切都给了我

Triangle.h: In constructor Triangle::Triangle(Vector, Vector, Vector, Point):
Triangle.h:11: warning: Triangle::b will be initialized after
Triangle.cc:9: warning: base Shape
Triangle.cc:9: warning: when initialized here

非常感谢任何帮助,谢谢。

我在当前设置和给出的第一个答案中都没有得到那个错误,但是输出没有考虑 ab(当形状构造函数被调用)

最佳答案

我知道 Shape 的初始化取决于函数 bBoxMaxX(),而函数 bBoxMaxX() 又取决于成员 b 的初始化。由于基类 Shape 在成员 b 之前初始化,因此代码将无法正常工作。

解决方案是使用一个使用初始化变量 _b 的 bBoxMaxX() 函数。或者直接使用 _b 的 Shape 初始化器。例如:

Triangle::Triangle(Vector _a, Vector _b, Vector s, Point o) : Shape(o, new RectilinearAnimationStrategy(s, bBoxMaxX(_b), bBoxMinX(_b), bBoxMaxY(_b), bBoxMinY(_b))),  a(_a), b(_b) {}

关于c++ - 类变量将在基类之后初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22365460/

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