delphi --> c++ kerdesek

Fórumok

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.


   #include <iostream.h>
    //Declaration of the function to be made as friend for the C++ Tutorial sample
    int AddToFriend(int x);
    class CPP_Tutorial
    {
       int private_data;
       friend int AddToFriend(int x);
    public:
       CPP_Tutorial()
      {
          private_data = 5;
       }
    };
    int AddToFriend(int x)
    {
       CPP_Tutorial var1;
       return var1.private_data + x;
    }
    int main()
    {
       cout << "Added Result for this C++ tutorial: "<< AddToFriend(4)<<endl;
    } 

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.

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.