Autosar 8-5-1-初始化顺序

发布于 2025-02-01 20:19:55 字数 556 浏览 1 评论 0原文

规则(

在初始化列表中,初始化顺序应如下:
(1)继承图的深度和从左到右的虚拟基类,
(2)(2)从左到右的直接基类直接基类继承列表的顺序,
(3)在班级定义中声明的订单的非静态数据成员。

myClass.h
class MyClass {
public:
  MyStruct m_s;
  MyTypedef m_t;

  explicit Participant(MyStruct &s, MyTypedef t);

private:
  AnotherClass m_r;
}
myclass.cpp
MyClass::MyClass(MyStruct &s, MyTypedef t)
    : m_s(s), m_t(t), m_r(this) {} // violates A8-5-1 (m_r is marked as violation)

该订单实际上与标题文件中的订单匹配。我不明白为什么违反该规则。我想念什么吗?

Rule (8-5-1):

In an initialization list, the order of initialization shall be following:
(1) virtual base classes in depth and left to right order of the inheritance graph,
(2) direct base classes in left to right order of inheritance list,
(3) non-static data members in the order they were declared in the class definition.

MyClass.h
class MyClass {
public:
  MyStruct m_s;
  MyTypedef m_t;

  explicit Participant(MyStruct &s, MyTypedef t);

private:
  AnotherClass m_r;
}
MyClass.cpp
MyClass::MyClass(MyStruct &s, MyTypedef t)
    : m_s(s), m_t(t), m_r(this) {} // violates A8-5-1 (m_r is marked as violation)

The order actually matches the order from the header file. I don't understand why this rule is violated. Am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文