Я экспортировал структуру из библиотеки C, которая Void*
lib LibXXX
alias OldStruct = Pointer(Void)
fun foo(old : OldStruct)
end
И хочу добавить некоторые методы к LibXXX::Old
Я знаю, что это может быть сделано толькоДеформация класса в большинстве языков:
struct NewStruct {
OldStruct old;
void new_functions();
};
Но действительно беспокоит то, что я должен получить доступ к полю old
явно.LibXXX.foo(old.old)
Мне нужен какой-то прозрачный способ сохранения простого представления LibXXX.foo(old)
, например Наследование или Методы расширения в CSharp.
Я пытался:
struct NewStruct < LibXXX::Old
# ...
end
Но произошла ошибка компиляции:
can't extend non-abstract struct Pointer(Void)
Я считаю, что это должно быть сделано с помощью Crystal.Но я не знаю, что такое лучшая практика, поэтому, пожалуйста.