Нет, поскольку getNum
является функцией-членом, которой C не имеет.
Возможное решение этой проблемы - написать функцию C ++, которая возвращает экземпляр foo
в виде foo*
(где foo
изменяется на пустую структуру) в C (я предполагаю, что это двоичный код, скомпилированный как C ++, на который ссылается C), затем в C ++ есть свободная функция с именем foo_getNum
или чем-то еще, которая принимает foo*
(определение которого модифицировано для версии C, чтобы быть пустой), которая вызывает getNum
для нее. Хотя, очевидно, это не будет безопасно для типов (но взятие foo*
, даже если foo
пусто, будет лучше, чем void*
- спасибо Дэвиду).