Форум программистов, компьютерный форум CyberForum.ru

Ошибки преобразования при передаче указателя на функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы) http://www.cyberforum.ru/cpp-beginners/thread1493866.html
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов наибольшего элемента в заданной части матрицы использовать подпрограмму. Для поиска наиб. элементов в верхней и нижней частях матрицы нужно использовать одну и ту же функцию. Функцию я написала. Для верхней части наиб. элемент находится правильно, но для...
C++ Школьная алгебра Добрый день, столкнулся с такой задачей: Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений: коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице; член, коэффициент при котором... http://www.cyberforum.ru/cpp-beginners/thread1493861.html
C++ Ошибка в консольном приложении при подключении MFC?
Здорова! Создал консольное приложение и в него добавил код: #include <iostream> using std::cout; using std::endl; #include <afxwin.h> int main()
C++ Моделирование COM
Здорова! Нужно написать модель COM, простой пример, создать класс, и интерфейсы. Просто чтобы разобраться как что работает. Вообще COM тяжело понимать. Читаю в книге ниче не разобрался.
C++ Как дописать код для полного функционирования? Структура "Студент" http://www.cyberforum.ru/cpp-beginners/thread1493797.html
все в принципе работает с одним студентом,но есть загвоздка,если ставишь больше то он ответы выдает на первого правильно а на других как захочет!нужно то ли цикл сделать,пройдя условие для одного студента,чтоб он так же прошелся и для других по очереди! #include <iostream> #include <string> #include<math.h> #include<stdlib.h> #include<windows.h> using namespace std; struct STUDENT
C++ Нужно ввести текст, если он больше 80 символов нужно чтоб он переходил на новую строку Написал клиент сервер, с командами add-запись в файл, remove-удаление из файла ,display-вывод на экран. Надо чтоб при вводе текста, если он больше "допустим 80 символов(возможно др число)" текст переходил на новую строку, а если вводить меньше 80 символов продолжался писать в строку. Внизу фрагмент алгоритма добавления в файл if( strncmp(add,buff,3)==0 ) { ofstream... подробнее

Показать сообщение отдельно
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
06.07.2015, 12:24     Ошибки преобразования при передаче указателя на функцию
Есть функция
C++
1
2
3
4
5
6
7
SQLITE_API int SQLITE_STDCALL sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);
речь о 3-ем члене

когда пишу
C++
1
2
3
4
5
6
7
8
callback(void *zs, int argc, char **argv, char **azColName){
    int i;
    for (i = 0; i<argc; i++){
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}
все нормально, но как только пытаюсь запихать эту функцию в класс SQLtest получаю ошибки

C++
1
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
1>SQLtest.cpp(47): error C3867: SQLtest::callback: в вызове функции отсутствует список аргументов; используйте SQLtest::callback" для создания указателя на член

или

C++
1
rc = sqlite3_exec(db, sql,  &SQLtest::callback, 0, &zErrMsg);
1>SQLtest.cpp(47): error C2664: "int sqlite3_exec(sqlite3 *,const char *,int (__cdecl *)(void *,int,char **,char **),void *,char **)": невозможно преобразовать аргумент 3 из "int (__cdecl SQLtest::* )(void *,int,char **,char **)" в "int (__cdecl *)(void *,int,char **,char **)"
1> Не существует контекста, в котором такое преобразование возможно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru