我有一个静态初始化链的简单案例。
在文件 Base.h 中
class Base {
public:
Base() {
this->next_ = list_;
list_ = this;
}
virtual void
Init() = 0;
static void InitAll() {
Base* cur = list_;
while(cur) {
cur->Init();
cur = cur->next_;
}
}
private:
Base* next_;
static inline Base* list_;
};
在文件A.cpp中
class A: public Base {
public:
...
void Init() override { ... }
};
static A instance_of_a;
我有类似的文件B.cpp、C.cpp等
我想将A.cpp,B.cpp,C.cpp,...分别制作成一个单独的共享库,是否可以不使用dlsym?我可以将 Base 放入另一个共享库吗?
它就可以工作:不需要什么特别的。