我希望这是一个简单的问题,我找不到关于“变量”的具体答案。被初始化。这是有问题的初始化列表: Triangle.cc
Triangle::Triangle(Vector _a, Vector _b, Vector s, Point o)
: a(_a), b(_b), Shape(o, new RectilinearAnimationStrategy(s, bBoxMaxX(), bBoxMinX(), bBoxMaxY(), bBoxMinY())){}
我知道你必须按照它们在类中定义的顺序初始化变量,但是当你初始化一个对象时,这种情况又如何呢?在调用a
之前,我需要b
和Shape
显式初始化,以便将正确的值返回到RectilinearAnimationStrategy
。我尝试的一切都给了我
Triangle.h:在构造函数
Triangle::Triangle(Vector, Vector, Vector, Point)
中:
Triangle.h:11:警告:Triangle::b
将在
之后初始化 Triangle.cc:9:警告:基地Shape
Triangle.cc:9:警告:在这里初始化时
非常感谢任何帮助,谢谢。
我没有得到当前设置的错误,也没有给出第一个答案,但输出不考虑a
和b
(调用Shape构造函数时未初始化)< / p>
答案 0 :(得分:4)
我知道Shape的初始化取决于函数bBoxMaxX(),它依赖于成员b的初始化。由于基类Shape在成员b之前初始化,因此代码将无法正常工作。
解决方案是使用bBoxMaxX()函数,该函数使用初始化变量_b。或者直接使用_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) {}