类变量将在基类之后初始化
Class variable will be initialized after base class
我希望有一个简单的问题,我找不到一个具体的答案,关于"变量"被初始化。下面是有问题的初始化列表: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())){}
我知道你必须按照在类中定义的顺序初始化变量,但是当你初始化一个对象的时候呢?我需要在调用Shape
之前显式初始化a
和b
,以便将正确的值返回给RectilinearAnimationStrategy
。我所尝试的一切都给了我
Triangle.h: In constructor
Triangle::Triangle(Vector, Vector, Vector, Point)
:
Triangle.h:11: warning:Triangle::b
将在
之后初始化三角形。cc:9: baseShape
三角形。Cc:9:警告:此处初始化
任何帮助都是非常感激的,谢谢。
我没有得到当前设置的错误,也没有给出第一个答案,但输出不考虑a
和b
(未初始化时,形状构造函数被调用)
我理解Shape的初始化取决于函数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++使用整数的压缩数组初始化对象
- 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract
- 在 C++20 之前和之后初始化 std::atomic
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- 使用构造函数初始化结构还是在之后设置其值更好?
- C++ 提升:在构建器之后初始化端点
- 是在C 静态初始化之前或之后调用dllgetClassObject
- 从另一个线程调用shared_from_this但在初始化shared_ptr之后时获取bad_weak_ptr
- 如何在函数调用之后初始化变量,例如新表达式提供
- 是在默认构造函数之前或之后调用的初始化列表
- MFC和OpenGL CView,C ,Glew之后初始化OpenGL
- 在声明C++之后初始化常量变量
- C++编译器在 main 之后实现动态初始化
- 在malloc()之后初始化结构中对ptr的引用
- 在模板化类的typedef之后使用typename初始化函数时出错
- c++变量初始化在SWITCH语句中DEFAULT之后的CASE内
- 在构造函数之后初始化boost::asio套接字
- 不允许绑定到初始化列表中的引用的临时存在于actor结束之后的理由是什么?
- 类变量将在基类之后初始化