TENCOKACISTROMY: hele, nejde :-) ani s přetypováním ne.
(*((typ objektu *)(funkce_vracejici_objekt())->interface->metoda))(objekt, parametry)
... chápeš? prostě objektový model pro čisté C sice existuje, a je i docela elegantní (může být i strukturovaný, když nezahrnuje dědění) - ale prostě když ti funkce vrátí objekt, musíš pracovat s pointerem na něj - nemůžeš ten samý objekt jednoduše předat nějaké metodě (šlo by to, kdyby C mělo nějaké "self" nebo "this" - což ovšem nemá).
C++ někomu sedne, někomu ne. Nemá to cenu řešit. Ti, kdo mají C++ rádi, si musí uvědomit, že používají jazyk, který je sice mocný, ale nesedne všem. Sedne to lidem s nadáním pro vyšší matematiku - ale je to už příliš vzdálené přirozenému jazyku či "kupeckým počtům". To je celé. Nerozjíždějme další flejm.