У меня есть структура следующим образом, с указателем на функцию с названием "длина", которая вернет длину члена символов.
typedef struct pstring_t {
char * chars;
int (* length)();
} PString;
У меня есть функция, возвращающая длину символов из указателя на PString:
int length(PString * self) {
return strlen(self->chars);
}
У меня есть функция initializeString(), которая возвращает указатель на PString:
PString * initializeString() {
PString *str;
str->length = &length;
return str;
}
Понятно, что я делаю что-то очень не так с моими указателями здесь, потому что строка str->length = &length
вызывает в моем отладчике сигнал EXC_BAD_ACCESS, как и `return strlen (self- > chars). Кто-нибудь знает о этой проблеме?
Я специально хочу, чтобы функция initializeString() возвращала указатель на PString, а функция length использовала указатель на PString в качестве входных данных. Это всего лишь эксперимент по реализации элементарной объектно-ориентированной системы на C, но у меня нет большого опыта работы с указателями. Спасибо за любую помощь, которую вы можете мне дать.