saide_a Ответов: 2

Такие функции с указателем функции в C присвоить функции-члена в C++


Я ищу способ назначить функцию-член класса c++ массиву функций c
Я не уверен, что концепция, которую я ищу, существует

class test
{
int id;
bool testid(int id1)
 {
  if(id>id1)
     return true;
   else
     return false;
 }
};
test item1, item2;
typedef bool (*test2) (int id);
test2 item3[2] = {&item1.testid, &item2.testid};

Я не хочу определять test2 таким образом
typedef bool (test::*test2) (int id);

Большое спасибо за ваших гидов

Что я уже пробовал:

Я пытался
void f1_0(int j);
void f1_1(int j);
typedef void (*f2)(int j);
f2 temp[2] = {&f1_0,&f2_0}

это работает

2 Ответов

Рейтинг:
2

CPallini

Существует (если я вас понял) возможность создать массив указателей функций, например

#include <stdio.h>

int inc(int i){ return i+1;}
int dec(int i){ return i-1;}

int main()
{
  int (*f[2])(int) = {inc,dec}; // array of function pointers

  int x = 5;
  printf("%d,%d,%d\n", x, f[0](x), f[1](x)); // call the functions assigned to the array items
  return 0;
}


saide_a

Я отредактировал свой вопрос пожалуйста посмотрите на него

CPallini

"Я не хочу определять test2 таким образом"
Но другого пути нет (и вы должны передать указатель на объект при вызове функций). По крайней мере, так будет до тех пор, пока мы не сможем понять, что вы на самом деле пытаетесь сделать.

saide_a

Я должен сделать функцию с фиксированным именем, реализация которой отличается для разных экземпляров( а не для экземпляра класса). а функция[fix name func] void(* function)(input) = &Myfucntion работает только с методом класса none

CPallini

Не могли бы вы уточнить? Что это за сценарий? Нужно ли предоставлять функцию C++ библиотеке C? Нужны подробности.

saide_a

Это так трудно объяснить, я использую canopen из canfestival , он написан на C, и я пытаюсь сделать каждый узел обобщенно

Рейтинг:
1

KarstenK

Синтаксис не совсем корректен, но он должен работать. Читать это пример указателя функции в основной функции. (другие вещи не так полезны для вас)

В чем же причины такого плетеного строительства?


saide_a

У меня есть фиксированная функция от третьей стороны, и я должен назначить ее

saide_a

Я отредактировал свой вопрос пожалуйста посмотрите на него