39

Вопрос по c++, c, interop, callback – Использование функции-члена класса C ++ в качестве функции обратного вызова C

Error: User Rate Limit Exceededint a(int *, int *). Я пишу код C ++, подобный следующему, и пытаюсь зарегистрировать функцию класса C ++ в качестве функции обратного вызова: class A { public: A(); ~A(); int e(int *k, int *j); }; A::A() ...

5 ответов

5

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

7

Error: User Rate Limit Exceeded

int e( A *this, int *k, int *j );

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

int callback( int *j, int *k )
{
    static A  *obj = new A();
    a->(j, k);
}

Error: User Rate Limit Exceeded

40

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceededclass A*Error: User Rate Limit ExceededthisError: User Rate Limit Exceededclass A*Error: User Rate Limit Exceeded

1

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

//In a header file:
extern "C" int e(int * k, int * e);

//In your implementation: 
int e(int * k, int * e) { return 0; }
14

Error: User Rate Limit ExceededError: User Rate Limit Exceeded):

#include <stdio.h>
#include <functional>

template <typename T>
struct Callback;

template <typename Ret, typename... Params>
struct Callback<Ret(Params...)> {
   template <typename... Args> 
   static Ret callback(Args... args) {                    
      func(args...);  
   }
   static std::function<Ret(Params...)> func; 
};

template <typename Ret, typename... Params>
std::function<Ret(Params...)> Callback<Ret(Params...)>::func;

void register_with_library(int (*func)(int *k, int *e)) {
   int x = 0, y = 1;
   int o = func(&x, &y);
   printf("Value: %i\n", o);
}

class A {
   public:
      A();
      ~A();
      int e(int *k, int *j);
};

typedef int (*callback_t)(int*,int*);

A::A() {
   Callback<int(int*,int*)>::func = std::bind(&A::e, this, std::placeholders::_1, std::placeholders::_2);
   callback_t func = static_cast<callback_t>(Callback<int(int*,int*)>::callback);      
   register_with_library(func);      
}

int A::e(int *k, int *j) {
   return *k - *j;
}

A::~A() { }

int main() {
   A a;
}

Error: User Rate Limit Exceeded

g++ test.cpp -std=c++11 -o test

Error: User Rate Limit Exceededc++11Error: User Rate Limit Exceededregister_with_library(func)Error: User Rate Limit ExceededfuncError: User Rate Limit Exceedede.

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