class
- это ключевое слово в C ++. Вы не можете использовать его как переменную.
Если вы хотите получить к нему доступ, вы можете написать эту часть в C, а затем скомпилировать ее с помощью компилятора c:
typedef struct foo {
bar class;
} foo;
bar *getClassPtr(foo *p) { return &(p->class); }
Включите эту часть в код C ++, используя
extern "C" {
bar *getClassPtr(foo *);
}
bar &getClass(foo &s) { return *getClassPtr(&s); }
Возможно, вам также понадобятся постоянные версии.
Вы все еще не можете включить определение структуры в ваш код C ++, поэтому вам, возможно, придется обернуть другие члены foo
таким же образом. Если оптимизация во время соединения не может быть встроенной getClassPtr
, в вызове есть некоторые издержки по сравнению с доступом к члену структуры непосредственно из C ++. Обычно это будет незначительно, но об этом стоит знать.
Возможно, вы захотите найти информацию о extern "C" .