У меня есть следующая структура с указателем на функцию с именем length, которая будет возвращать длину члена chars.
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, но у меня нет большого опыта работы с указателями. Спасибо за любую помощь, вы можете дать мне.