Eventuali duplicati:
Can you write object oriented code in C?Esperimento: C orientato agli oggetti?
Hi!
Solo per il gusto di farlo, ho sperimentato questi ultimi due giorni con la creazione di un ambiente di oggetti molto semplice, molto semplice in C. puro. Ho lavorato con macro, collegamenti dinamici, strutture di descrizione del tipo e simili, e sono arrivato al seguente:
string_o str = new(String, "hello world");
list_o list = new(List);
List.pushf(list, str);
printf("In the list: \"%s\"\n",
String.text(List.popf(list)));
delete(list);
delete(str);
appare e funziona un pò bello, ma io non riesco a capire il modo di falsi metodi di istanza. Non riesco a superare Class.function(instance)
, non senza sostituzioni macro globali per nomi di funzioni, che vanifica lo scopo dell'incapsulamento.
Ancora, questo è un esperimento, solo per la sfida e il divertimento =). Ragazzi, potete aiutarmi a trovare un modo per farlo? Non voglio usare una pre-elaborazione aggiuntiva, solo macro C e GCC.
modifica> dimenticato di dire - Non voglio che ogni istanza contenga i puntatori di funzione nella sua struttura. Questo mi darebbe la sintassi del metodo, ma significherebbe che un oggetto di dati a 4 byte avrebbe una dozzina di puntatori di funzione copiati su ogni istanza. È un po 'come barare = P haha
Grazie in anticipo!
non è questo il motivo per cui hanno creato cpp?: P – Tobias
Associare ogni 'classe' a una tabella di puntatori di funzione che vengono eseguiti quando si chiama una 'funzione membro'? – birryree
@Tobias: _shudder_, spero di no! [C++: un polipo fatto inchiodando gambe extra su un cane.] (Http://en.wikiquote.org/wiki/Programming_languages#C.2FC.2B.2B) - Steve Taylor: P –