Я пытаюсь создать связанный список в C, но пытаясь его легко упаковать в виде класса стиля C++. У меня возникли некоторые проблемы, однако с помощью указателей на функции в C.C: указатель функции внутри структуры typedef
typedef struct linkedList {
int count;
struct msgNode *front;
struct msgNode *back;
void (*addMSG)(unsigned char *, int, struct linkedList *);
} msgList;
void addMSG(unsigned char *data, int size, struct linkedList *self);
В идеале, я хотел бы, чтобы он таким образом, что вы можете сделать вас список, а затем добавить можно просто назвать «метод» (функция) в структуру, имитирующую поведение, которое вы увидите на C++.
В настоящее время я получаю ошибку сегментации, когда я вызываю addMSG, что из-за того, что addMSG не указывает на функцию. Тем не менее, я не хочу указывать функцию, указывающую на каждый раз, когда я хочу использовать связанный список. Есть ли хороший способ иметь указатели на функции без необходимости указывать на функцию, или вам нужно неявно указывать ее на функцию?
Это только частичная реализация, показанная здесь. В конце эта структура будет иметь все необходимые функции. Это просто для того, чтобы держать этот вопрос коротким и точным.
Вы создаете ненужную динамическую нагрузку. Если вы хотите написать на C, вы должны использовать C-идиомы и писать с помощью обычных функций. –
[В предыдущем ответе] (http://stackoverflow.com/a/17622474/315052) я более подробно объясню, как это можно сделать так, чтобы фактически поддерживать динамическую диспетчеризацию. – jxh