Код: Выделить всё
// registry.h
#include
std::vector &GetRegistry();
< /code>
// registry.cpp
#include "registry.h"
std::vector &GetRegistry() {
static std::vector registry;
return registry;
}
< /code>
// thingadder.h
#include "registry.h"
class ThingAdder {
public:
explicit ThingAdder(int const *thing) {
GetRegistry().push_back(thing);
}
};
< /code>
// things.cpp
#include "thingadder.h"
int g_thing1 = 1;
ThingAdder g_adder1(&g_thing1);
< /code>
// main.cpp
#include "registry.h"
#include
#include
int main() {
std::print("registry size: {}\n", GetRegistry().size());
return 0;
}
Решения? В реальной библиотеке будет зарегистрировано больше файлов объектов, и я не хочу, чтобы каждый пользователь библиотеки добавил ссылку на символ для каждого из них.
Подробнее здесь: https://stackoverflow.com/questions/795 ... ic-library
Мобильная версия