Обратный вызов с функцией-членом [дубликат]

Вы должны думать о табличных объектах как о матрицах, из которых 2D наследуют все свои свойства индексирования (так что [ dim-indices ]):

is.matrix(tab)   # returns TRUE

Если у вас есть таблица больше 2d, она будет естественно наследуют его функции доступа от класса массива. Единственным (типичным) классом данных, который использует «$» в качестве доступа, является список (из которого наследуются наборы данных). Попробуйте:

tab[ , 1]  # Or
tab[ , "Cleveland"]

(я полагаю, я не был бы так категоричен в отношении «$». Вы можете получить доступ к элементам некоторых объектов языка и объектов среды с помощью этого аксессора, поскольку они ведут себя как списки.)

3
задан basil 20 January 2014 в 22:56
поделиться

1 ответ

Есть ли какой-нибудь способ?

Я не знаю специально для API, но обычно поддерживает обратные вызовы c-style, чтобы иметь данные пользователя, переданные из указателя void* (я бы угадал 1-й параметр указанной вами сигнатуры). Что обычно делает:

  1. Объявить статическую функцию класса для указания в качестве функции функции обратного вызова
  2. Реализовать эту функцию для передачи переданного указателя данных пользователя указателю на ваш класс экземпляр и вызов функции-члена
  3. Определите функцию-член, определенную в классе, который обеспечивает реализацию, которую вы хотите
  4. Передайте указатель на экземпляр класса обработки, когда вы собираетесь регистрировать указатель функции статического члена с C API

Надеюсь, это указывает на правильное направление.

1
ответ дан πάντα ῥεῖ 21 August 2018 в 10:35
поделиться
  • 1
    Это работает, я подумал, что до того, как я опубликую. Я в основном просто сделал функцию обратного вызова, а также вектор, статический. Это одно из ограничений функции sqlite3_exec (...), функция обратного вызова должна иметь определенную подпись, и я не могу ее изменить. Во всяком случае, это просто не кажется мне очень изящным от дизайна, точки зрения. Любые другие мысли, которые у вас есть, будут оценены по достоинству. Большое спасибо! – basil 21 January 2014 в 05:11
Другие вопросы по тегам:

Похожие вопросы: