Sziasztok,
Lenne par (egyenlore csak egy :-) ) harci kerdesem amely a ket nyelv kozti parhuzamossagot illeti. A feladat, hogy delphi-bol kellene atmentenem par regi algoritmusomat C++-ba majd Linux alatt keresztplatformos allapotban mukodesre birni oket. Szerencsere talaltam hozza egy nagyszeru konvertert ami a nehezet megoldja helyettem, de vannak meg neki hianyossagai amiket szeretnek potolni. Ilyen pl. a class method problema is amit szeretnek megfeleltetni a C++-ban.
Ez a delphi felol egy peldaban igy nezne ki:
class function Example: boolean;
begin
Result := False;
...
end;
Ami ugye annyit tesz, hogy a class kulcsszo osztalyfuggove teszi a metodust az alapertelmezett objektumfuggo tulajdonsag helyett, igy meghivhato lesz anelkul is, hogy lenne mar belole letezo peldany. (Pl: praktikus constructort hivni vele, ha van meg macera a constructorral meghivas elott)
A masik oldalrol pedig (C++) van egy hasonlo eset amikor egy valtozot statikuskent deklaralok az osztalyban, igy az a betoltodeskor lesz lefoglalva nem pedig a peldany letrehozasakor, emellett ez egyetlen peldanyban marad meg akkor is, ha n objektumot letrehozok.
Na es akkor itt jonne a kerdesem is. :-)
Ha a delphis "class method"-od statikus fuggvenykent konvertalom, akkor az ugyanazt a viselkedest fogja-e produkalni?
Koszi elore is a valaszokat. :-)
Hozzászólások
SZia
Talán egy barát függvénnyel (friend...) hasonlót tudsz elérni, mint Delphi-ben/Java-ban/C#-ban a class function.
Attila,
PS:. Én még küzdök a Kylix-szel, de ha váltok akkor C#. :-)
Koszi, ez hianyzott. :-)
Szal, akkor a function/procedure elott allo class kulcsszo helyere nyugodtan mehet a "friend" egy az egyben a deklaracios reszhez? :-)
---------------------
Minél korszakalkotóbb ötlettel állsz elő, annál több hülyén kell átverekedned magadat.
static function?
KisKresz
Na de ehhez már készíteni kell egy példányt a CPP_Tutorialból, az eredeti kérdés pedig pont az volt, hogy lehet ezt megoldani példány nélkül.
A megoldás a statikus memberfüggvény:
class CAkarmi
{
public:
...
static bool test(void)
{
...
return true;
}
...
};
És ezt már lehet példányosítás nélkül is hívni:
CAkarmi::test();
Persze csak akkor fog lefordulni ha a függvény nem hivatkozik az osztály nem-statikus membereire.