Tieni presente che, in prima approssimazione, scrivere
object.operation_name(arg1, ...argn)
e' equivalente a scrivere
operation_name(object, arg1, ...argn)
Ho volutamente scritto “operation_name” e NON “method”!
Un “metodo" non e' altro che una funzione in cui esiste un “primo” parametro passato “sempre”. In Python questo viene indicato esplicitamente e di solito il nome usato e “self”, che e' l'equivalente del C++/Java “this”. In C++/Java non viene indicato semplicemente perche' e' il compilatore che si arranga a passarlo in automatico, assegnandogli il nome “this”, nome che NON PUO' ESSERE USATO per altri scopi, essendo una “keyword” del linguaggio.
Poi ci sono delle funzionalita' aggiuntive, basate sull' “ereditarieta'” (NON sull' “overloading”, che e' un'altra cosa), ma, con un po' di “maneggi” (usanto i puntatori a funzioni) si puo' implementare anche in C.
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf
Sei SICURO di programmare in C ???
E' strano che tu debba implementare quello che ti serve in C quando la libreria per la UI e' scritta in C++.
Poi, parlando di programmazione concorrente, a meno che tu non utilizzi le API di windows o “pthreads”,
MA stai utilizzando “std::thread” della libreria standard del C/C++,
in EFFETTI DEVI programmare in C++, visto che la “standard library” e' basata su templates che sono supportate SOLO dal C++.
Cioe', sei TU che ti dai dei limiti per qualche motivo che a noi non e' dato sapere OPPURE e' un'esplicita indicazione del docente?
In ogni caso il C ha TUTTO quello che serve, anche se alcune funzionalita' andranno implementate “a mano” invece che delegarle al compilatore.