【发布时间】:2019-08-06 18:08:15
【问题描述】:
我正在尝试进行一些重构,我很好奇您将如何解决这个问题。
基本上我正在尝试为每个类创建一个初始化函数。有些类继承自其他类,如果可能,我想使用父初始化函数。你会如何解决这个问题?
我想将这些结构与memcpy 一起使用,也可能将它们与关键字align 和__attribute__((packed)) 一起使用;并且它们必须可以与extern "C" 一起使用。我会排除构造函数和析构函数。
举例说明:
struct A
{
int a;
};
void initialize(A& a)
{
a = 0;
}
struct B : A
{
int b;
};
void initialize(B& b)
{
initialize(b); // here I want void initialize(A& a), not recursion
b = 0;
};
也许我必须做一些演员表?理想情况下,我正在寻找一种不会产生开销的解决方案。
【问题讨论】:
-
仔细阅读您的问题后,您想使用 C。C++ 似乎不适合您。
-
C中没有引用。而且我也不认为它有任何继承。 -
我正在使用 C++,但将来我可以将它们用于 C API。
-
initialize(b)->initialize(static_cast<A&>(b)). -
@MaxLanghof 最初我认为这个问题有点太不清楚,无法给出答案,但由于没有进行进一步的编辑,也没有给出任何澄清,我决定根据我的评论提供答案.我同意答案属于答案部分,而不是评论部分。
标签: c++ c inheritance recursion struct