játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5512
FZoli:    4895
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2529

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2199
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [143]
Pretender - Törzstag | 2498 hsz       Online status #151814   2011.05.11 10:14 GMT+1 óra  
tényleg, ha már itt tartunk, akkor olyan pár száz elem esetén melyikben gyorsabb keresni? std::map-ben, vagy std::vector-ban, (a lentebbi megoldással)?

   
Asylum - Törzstag | 5512 hsz       Online status #151813   2011.05.11 10:07 GMT+1 óra  
Ennek localization a böcsületes neve és a szabványos c++-ban nincs rá túl sok támogatás. A .netes c++ hátrányait meg te is tudod.

Hirtelen ezt találtam:
http://www.lingobit.com/solutions/articles/c-localization.htm

Én természetesen irnék egy saját progit ami valamilyen egyszerü nyelv alapján legenerál egy header fájlt amiben

Kód:
#define MENU_TITLE      0
#define MENU_OPTION_0   1


stb. van, illetve egy kulcs-érték tömböt tartalmazo fájlt amit futási idöben lehet cimezni ezekkel a define-kkel (nyilván a tömböt beolvasva). Nem egy nehéz dolog.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Kuz - Törzstag | 4455 hsz       Online status #151812   2011.05.11 10:04 GMT+1 óra  
Hát én maradnék a beépített resource kezelésnél.

Pret: nem, ennyi a funkciója, szöveget akarok kulcs alapján kikeresni. De lehet amúgy, hogy ilyen jellegű lesz majd a megoldás, megspékelve annyival, hogy cache-szerűen lesznek benne az adatok (tehát nem nyalok fel 5000 key-value párt egyben, csak azt, amit éppen használnom kell, és ellátom őket egy élettartammal is, hogy amit meg betöltöttem, de rég használtam, azt törlöm).
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pretender - Törzstag | 2498 hsz       Online status #151811   2011.05.11 10:04 GMT+1 óra  
én erre szerintem olyasmit csinálnék, hogy vezetnék egy (ha van hozzá editor akkor bináris, ellenkező esetben szöveges) fájlt.
Csinálok egy ilyen ResManager osztályt (esetleg singleton mintával, ha szükséges), amiben betöltöm magát a lang. file-t. Az egész egy std::map, vagy egy egyszerű struct lista lenne
Kód:
struct Valami
{
    std::string key;
    std::string value;
};
class ResManager
{
    std::vector<Valami> cuccok;
};

Igazából csak ott számít, hogy ez most std::map, vagy struktúrából készült lista, hogy mennyi az elemszám, ugyanis nem mindegy a keresési idő (gondolom )

Ezután a get szimplán annyi lenne, hogy (ebben az esetben) megkeresem az adott key-ű elemet, és visszaadom a value értékét pl.
Kód:
inline const std::string Get(const std::string& p_Key)
{
    for (int i = 0; i != cuccok.size(); i++)
    {
        if (cuccok[i].key == p_Key)
            return cuccok[i].value;
    }

    return "nincsilyenkey"; //vagy akármi
}

Nyilván std::map esetén nem így néz ki a keresés

Vagy lenne valami más funkciója is, vagy szimplán félreértettem?

szerk.:
Látom HG is valahogy hasonlóan oldotta meg (félreértés ne essék, most írtam a kódot, nekem ilyenem nincs)

   
HomeGnome - Szerkesztő | 2919 hsz       Online status #151810   2011.05.11 10:02 GMT+1 óra  
Jóóó, hát az én megoldásom parasztosan eccerű, egy sima szöveges fájlban vannak a kulcsok és a szövegek egymáshoz rendelve (lang_eng.txt), ebből töltöm fel az elején a sztringeket. A setup progiban pedig ki lehet választani a nyelvet (ezt a .cfg-be menti), és így fogja a megfelelő lang_***.txt -t megnyitni programindításkor. Persze lehetne akár futás közben is mondjuk az options menüben nyelvet váltani, de minek bonyolítsam.. Meg nem csak sztringek vannak így, hanem pl a könnyebb paraméterezhetőség érdekében konstansok is (parameters.txt)..
Kódot azt inkább nem mutatok, nehogy kihulljon tőle a hajad..

Klikk, a JF.hu bulvárlap.
Klikk #6 WIP: 30% (Kuz, sade, ramoryan...)
   
Kuz - Törzstag | 4455 hsz       Online status #151807   2011.05.11 09:42 GMT+1 óra  
Muti-muti-muti.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
HomeGnome - Szerkesztő | 2919 hsz       Online status #151805   2011.05.11 09:23 GMT+1 óra  
Bírom ezt a (számomra) kínai csevegést, aztán most meg kiderül, hogy már rég megcsináltam ezt az engine-emben..

Klikk, a JF.hu bulvárlap.
Klikk #6 WIP: 30% (Kuz, sade, ramoryan...)
   
Kuz - Törzstag | 4455 hsz       Online status #151804   2011.05.11 08:35 GMT+1 óra  
C# alatt ebben szokás(?) megoldani a resource kezelést, ezen belül általában a szövegek használatát. A resx fileokban kulcs-érték párok vannak, így meg lehet oldani a többnyelvesítést, amennyiben mindig vezeted a változásokat. Ha csinálsz egy osztályt, ami visszaad egy stringet a beállított nyelv alapján (ehhez kell a ResourceManager, amit érdemes használni c# alatt), akkor neked csak a kulcsot kell mindig megadni, így az majd nyelvtől függően ad vissza értéket. Pl.:

Hungarian.resx:
difficulty_hard | Nehéz

English.resx:
difficulty_hard | Hard

A kódban meg valami ilyet csinálsz, hogy:
valami.Text = MyStringResource.GetString("difficulty_hard" );

De ez csak vázlat.

Namost erre c++ alatt is van lehetőség (String::Resources::ResourceManager használatával), a problémám, hogy ehhez elvileg be kell húzni az mscorlib.dll filet, amihez viszont be kell állítani a /clr -t (common language runtime support a project propertyjében). Ha viszont ezt beállítom, akkor marha sok hibát dob, amiket még nem dolgozott fel a kis szivem. Szóval nem tudom melyik oldalról kellene megközelítenem a problémát. Ezzel a /clr-rel dolgoztatok már? Jó az? Kell az?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pretender - Törzstag | 2498 hsz       Online status #151802   2011.05.11 06:47 GMT+1 óra  
amúgy az mire jó? sose használtam

   
Kuz - Törzstag | 4455 hsz       Online status #151799   2011.05.10 22:51 GMT+1 óra  
Azért írtam ResourceManager-t, mert elvileg nem csak c#, hanem c++ alatt is így hívják azt az osztályt, ami resx fileokat dolgoz be. A probléma, hogy eddig vagy nem ment a kód, vagy /clr beállítást kért, az meg marha sok hibát generál, szóval egyelőre elakadtam.

Szerk.:
Most látom, hogy valami Resources::ResourceManager-t lehet használni. Ennek utánanézek.
Szerk.2:
Ez a System namespace-ben van, amit talán az mscorlib.dll-ből kéne előhalászni, ahhoz viszont /clr kell, ami egy rakat problémát szül. Miért van ez így elbonyolítva....?

Ezt a hozzászólást Kuz módosította (2011.05.10 23:19 GMT+1 óra, ---)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pretender - Törzstag | 2498 hsz       Online status #151798   2011.05.10 22:35 GMT+1 óra  
én is templateset írtam, ha fix paramétered van csak, és content managerre gondolsz, akkor majd írj, ha gondolod (olyan... xna-s lett , m_Game->GetContent()->Load<T>("path.vmi"; )

   
bit.0x8000 - Törzstag | 574 hsz       Online status #151796   2011.05.10 21:34 GMT+1 óra  
Idézet
Kuz :
ResourceManagerrel foglalkozott már valaki?


Én írtam magamnak egy template-eken alapulót, bár lehet, hogy csak nekem áll kézre...
Kód:
StandardLib::ResourceManager<ImageFile> imageFiles("graphics/");
// A Resource egy smart pointer
StandardLib::Resource<ImageFile> mouseCursor =
  imageFiles.open("mouse_cursor.png^LINEAR");

// Az alábbival lehet üríteni a tárolót
// (A paraméter egy timeStamp,  csak az utána létrehozottakat nézi)
imageFiles.flushResources(0.0);
   
Asylum - Törzstag | 5512 hsz       Online status #151793   2011.05.10 20:50 GMT+1 óra  
Mire gondolsz? ContentManager?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Kuz - Törzstag | 4455 hsz       Online status #151792   2011.05.10 20:34 GMT+1 óra  
ResourceManagerrel foglalkozott már valaki? A neten eddig nem találtam semmi olyat, ami fordulna.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
bit.0x8000 - Törzstag | 574 hsz       Online status #151786   2011.05.10 16:59 GMT+1 óra  
Idézet
proof88 :
én akkor használtam a mutable-t amikor egy olyan osztályt írtam, aminek volt olyan konstans tagfüggvénye, amit azért konstansnak írtam, mert tényleg nem azért lett kitalálva hogy bármi is változzon az ojjektumban a meghívásakor, mittomén egy sima függvény ami visszaad valami értéket vagy ilyesmi .... viszont mégiscsak azt akartam hogy növeljen egy privát változót is, statisztikai célból. De kívülről mégiscsak konstansnak látszódjon.


Én ezért nem használok const metódusokat általában, inkább csak az egyszerűbb osztályokban (pl. van egy Resource template-em, ott hasznos)...
   
proof88 - Törzstag | 530 hsz       Online status #151785   2011.05.10 16:32 GMT+1 óra  
de ahhoz nincs kedvem
   
Joga - Törzstag | 1791 hsz       Online status #151784   2011.05.10 16:16 GMT+1 óra  
Ekkor különválasztod a statisztikát az osztálytól és voilá
(ಠ ›ಠ) Stewie!

   
proof88 - Törzstag | 530 hsz       Online status #151783   2011.05.10 16:02 GMT+1 óra  
én akkor használtam a mutable-t amikor egy olyan osztályt írtam, aminek volt olyan konstans tagfüggvénye, amit azért konstansnak írtam, mert tényleg nem azért lett kitalálva hogy bármi is változzon az ojjektumban a meghívásakor, mittomén egy sima függvény ami visszaad valami értéket vagy ilyesmi .... viszont mégiscsak azt akartam hogy növeljen egy privát változót is, statisztikai célból. De kívülről mégiscsak konstansnak látszódjon. Ez sem jó?
   
Joga - Törzstag | 1791 hsz       Online status #151782   2011.05.10 15:25 GMT+1 óra  
Nem tudom Wolfee, de szerintem egy konstans változó azért konstans, hogy ne módosíthasd...
(ಠ ›ಠ) Stewie!

   
Asylum - Törzstag | 5512 hsz       Online status #151759   2011.05.10 11:27 GMT+1 óra  
Idézet
Wolfee :
és így a kecske is jóllakott, és a káposztából is maradt.



Asylum pedig orrbavág mindjárt, mert ha a mutable kulcsszot kell használnod az egy óriási tervezési hibára utal
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #151757   2011.05.10 10:59 GMT+1 óra  
Idézet
Wolfee :
és így a kecske is jóllakott, és a káposztából is maradt.


Vagy inkább a káposzta is elfogyott, és a kecske is éhen döglött...

Amúgy rájöttetek már, hogy ha egy osztályt csak egyféleképpen használtok, akkor nincs értelme megkülönböztetni normál és konstans metódust?
   
Wolfee - Törzstag | 1337 hsz       Online status #151754   2011.05.10 10:31 GMT+1 óra  
tegnap megtudtam, hogy mire is jó a mutable kulcsszó, hol lehet használni, ezért álljon itt örök tanulságul:
Kód:
class Alma
{
    int a;
public:
    int foo() { return a; }
    void bar(int _a) { a = _a; }
};

int main()
{
    const A a;
    a.foo();
    a.bar(1);
    return 0;
}


na ez a kód nem fog lefordulni, mert konstans változón csak konstans függvényeket lehet hívni. tehát legyen a kód:

Kód:
class Alma
{
    int a;
public:
    int foo() const { return a; }
    void bar(int _a) const { a = _a; }
};

int main()
{
    const A a;
    a.foo();
    a.bar(1);
    return 0;
}


na ekkor már csak a bar() nem fog lefordulni, mert konstans függvény nem tud adatot módosítani. ezért kell a mutable.

Kód:
class Alma
{
    mutable int a;
public:
    int foo() const { return a; }
    void bar(int _a) const { a = _a; }
};

int main()
{
    const A a;
    a.foo();
    a.bar(1);
    return 0;
}


és így a kecske is jóllakott, és a káposztából is maradt.
FZoli jóváhagyásával XD

   
TomX - Törzstag | 223 hsz       Online status #151696   2011.05.08 13:40 GMT+1 óra  
C++ Builderben erre van a Code Guardian

Kicsit lassítja a programot de az ilyen huncutságokat szépen kijelzi.
   
Asylum - Törzstag | 5512 hsz       Online status #151641   2011.05.07 00:32 GMT+1 óra  
Memory leaket igy nem fogsz detektálni az biztos. Eleve csak onnantül tudod, hogy memory leak, hogy a program befejezésekor is még létezik. Arra pedig ott a _CrtDumpMemoryLeaks().

Esetleg még azt lehet csinálni, hogy felüldefiniálod az operator new-et (visual studioban pont nem lehet) és nyomon követed a foglalásokat.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #151640   2011.05.06 22:59 GMT+1 óra  
Ja, de az operációs rendszer inkább biztosít a Zalkalmazásnak egy kicsivel nagyobb összefüggő memóriaterületet, minthogy összevissza tördelve legyen a memória
(ಠ ›ಠ) Stewie!

   
Dookle - Tag | 478 hsz       Online status #151639   2011.05.06 22:56 GMT+1 óra  
Idézet
bit.0x8000 :
Idézet
Dookle :
ezért nem értem miért tárol az OS vagy vagy bármi más olyan dolgokat ami már eleve szemét...



szerk2: Egyébként én olyat is kinézek a mostani OS-ekből, hogy ha delete után rögtön csinálsz egy new-t, akkor nem foglal új memóriát, hanem visszaadja a "használaton kívüli" régit...
(Persze tévedni emberi dolog...)



Nem tévedsz ! 100% igaz amit mondtál pont ma próbáltam . Sőt ha ciklusba rakod (new-delete) akkor lefoglalja a helyet és utánna konstans marad a lefoglalt memória.(a task manager még csak jelét sem mutatja hogy valami történne).

Idézet
Kuz :Minek töröljön egyből az OS, ha nem feltétlenül szükséges? Te sem viszed le a szemetet, csak mert félig van a kuka


Igaz , de mennyi időt veszítesz amíg leviszed egyszerre az egészet.Én inkább egyenként azonnal kidobálnam az ablakon (kényelmesebb és gyorsabb is ) No az ilyen forradalmi garbage collector őtleteim miatt nem vagyok fejlesztő a M$ nál
STEVIE RAY VAUGHAN FOREVER !!!!!

http://pinkcatgames.ucoz.com/
   
Kuz - Törzstag | 4455 hsz       Online status #151637   2011.05.06 22:03 GMT+1 óra  
Minek töröljön egyből az OS, ha nem feltétlenül szükséges? Te sem viszed le a szemetet, csak mert félig van a kuka.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
bit.0x8000 - Törzstag | 574 hsz       Online status #151635   2011.05.06 21:43 GMT+1 óra  
Idézet
Dookle :
ezért nem értem miért tárol az OS vagy vagy bármi más olyan dolgokat ami már eleve szemét...


Csak találgatok, de pl. hogy nagyobb összefüggő területek legyenek felszabadítva?

szerk: Amúgy itt a "tárolás" értelmetlen fogalom szerintem...

szerk2: Egyébként én olyat is kinézek a mostani OS-ekből, hogy ha delete után rögtön csinálsz egy new-t, akkor nem foglal új memóriát, hanem visszaadja a "használaton kívüli" régit...
(Persze tévedni emberi dolog...)

Ezt a hozzászólást bit.0x8000 módosította (2011.05.06 22:04 GMT+1 óra, ---)
   
Dookle - Tag | 478 hsz       Online status #151634   2011.05.06 21:35 GMT+1 óra  
Köszi mindenkinek. 99.9% hogy ez valami OS specifikus dolog lesz (Ami doksi volt , átolvastam a neten) + érdekes módon egy idő után elkezdi törölni a felgyülemlett szemetet. A fura csak az hogy a destructor még a garbage collector előtt fut le ... ezért nem értem miért tárol az OS vagy vagy bármi más olyan dolgokat ami már eleve szemét...ergó törölve lett (miért kell ezt ennyire kikomplikálni ? miért nem lehet csak simán DELETE és kész ?!!) ... na de mindegy... úgylátszik az M$ útjai kifürkészehetetlenek...
STEVIE RAY VAUGHAN FOREVER !!!!!

http://pinkcatgames.ucoz.com/
   
Joga - Törzstag | 1791 hsz       Online status #151622   2011.05.06 14:43 GMT+1 óra  
Én azt mondtam, hogy lefut a delete, azt, hogy ezt az OS hogy kezeli, nincs sok fogalmam
(ಠ ›ಠ) Stewie!

   
bit.0x8000 - Törzstag | 574 hsz       Online status #151621   2011.05.06 14:36 GMT+1 óra  
Idézet
Joga :
Smart pointereknél rögtön azután lefut a delete, hogy az utolsó hivatkozás megszűnik.


Ha jól tudom, a new, delete és hasonló utasításokat az OS kezeli, tehát csak rajta múlik, hogy mit csinál...
   
Joga - Törzstag | 1791 hsz       Online status #151619   2011.05.06 14:26 GMT+1 óra  
Kuz: Smart pointereknél rögtön azután lefut a delete, hogy az utolsó hivatkozás megszűnik.

Szerk.: lehet, hogy maga az engine kezeli a szemetet, és eldönti, hogy mikor akarja felszabadítani, vagy mikor nem
(ಠ ›ಠ) Stewie!

   
Kuz - Törzstag | 4455 hsz       Online status #151618   2011.05.06 14:12 GMT+1 óra  
Ez most tisztára olyan, mitn a C# garbage collectora, ami nem determinisztikusan fut (ugye így mondják?), és max akkor látsz dispose után memória felszabadítást, ha a GC.Collect-et is meghívod.
Amúgy win alatt kb minden valamilyen módon cache-elődik, ezért van az, hogy ha megnyitsz egy nagy képet, aminek a megnyitása pl 2-3 mp-et igénybe vesz először, majd kilépsz a képnézegetőből, aztánmegint megnyitod, általában nem nagyon van várakozási idő.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
bit.0x8000 - Törzstag | 574 hsz       Online status #151617   2011.05.06 13:57 GMT+1 óra  
Nem lehet, hogy az OS-nek van valami saját szemétgyűjtő algoritmusa?
   
Dookle - Tag | 478 hsz       Online status #151612   2011.05.06 12:51 GMT+1 óra  
Hali ! Lenne egy kérdésem amire sok keresgélés után sem találtam kielégítő választ :
Memory Leak...

Igazából az érdekelne hogy pl task manager-ben figyelve a progit lehet-e helyes konklúziót levonni ? Mert például létrehozok 20 darab objektumot , és törlöm őket , 3 dolog szokott történni

1. Task manager visszaáll arra az értékre mielőtt az objektumok létre lettek hozva
2. Törlés után nem történik semmi , de ha létrehozok újabb 20 objektumot , akkor sem történik semmi csak ha létrehozom a 21.-et akkor ismét elkezdi növeli az elfoglalt memória területet.
3 . Törli az objektumokat de nem áll vissza teljesen a kezdő értékre (Mintha csak egy részét törölné , és utánna megint létre hozhatok pár objektumot mire ismét elkezdi növelni az elfoglalt memória területét) .

És ezeket csinálja randomra.Sohasem tudom előre melyik fog bekövetkezni

Félek hogy ez memory leak , de az engine amit használok smart pointereket használ így elvileg ki van zárva a memory leak veszélye (A fejlesztője is ezt mondja).
Még mielőtt valaki VC++ hoz javasolna valami leak detectort , szólok hogy dll-t fordítok így nem hiszem hogy ez a hasznomra válhat.

A segítséget előre is köszi.

PS: Ha DBProban írok egy hasonló tesztet objektekkel akkor is ugyan ez történik (fentebb említett 3 lehetőség) , pedig állítólag dbp-ben már nincs mem leak...
STEVIE RAY VAUGHAN FOREVER !!!!!

http://pinkcatgames.ucoz.com/
   
Orphy - Törzstag | 1893 hsz       Online status #151498   2011.05.02 15:47 GMT+1 óra  
Skacok, C++ topic...
   
Asylum - Törzstag | 5512 hsz       Online status #151494   2011.05.02 15:35 GMT+1 óra  
Dehogynem, addig nyalnám Jessicát amig el nem élvez Meg van oldva a vizszükséglet
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
terbed - Tag | 233 hsz       Online status #151493   2011.05.02 15:33 GMT+1 óra  
Jó a c++ megfelelő dolgokhoz megfelelően használva és jó a c# megfelelő dolgokra megfelelően használva. Neked lefordítva jó Jessica megfelelő dolgokhoz megfelelően használva és jó a szar is megfelelő módon megfelelően használva. Pl. gondolj bele a sivatagban kiszáradva nem mész sokra Jessicával de egy finom nagy elefántkakinak megörülnél ami caftos zaftot tartalmaz.
   
Asylum - Törzstag | 5512 hsz       Online status #151490   2011.05.02 15:16 GMT+1 óra  
Úgy kell ehhez hozzáállni, hogy ami jó a c#-ban azt a c++-ból lopta, ami rossz az meg microsoft.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
terbed - Tag | 233 hsz       Online status #151487   2011.05.02 15:12 GMT+1 óra  
Igen és az alapértelmezett konstruktor pedig beállítja az értékeket alapértelmezettre (legalábbis c#-ban, de gondolom nincs ez máshogy c++-ban sem)
   
proof88 - Törzstag | 530 hsz       Online status #151485   2011.05.02 15:09 GMT+1 óra  
lehet, olyanolyan mintha akármilyen más metódust hívnál meg. Asylum kifejtette egyébként vmelyik nap hogy a memóriafoglalásnak egyébként sincs köze a konstruktorhoz, mert független. A konstruktor csak lefut miután a memória le lett foglalva az objektumnak. Abban a te kódod van.
   
Asylum - Törzstag | 5512 hsz       Online status #151483   2011.05.02 15:05 GMT+1 óra  
Mért ne lehetne??

Kód:
class Apple
{
public:
    Apple(int i) {
        Apple(i, "");
    }

    Apple(const std::string& name) {
        Apple(0, name);
    }

    Apple(int i, const std::string& name) {
        std::cout << "Apple::Apple(" << i << ", " << name << ")\n";
    }
};
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #151477   2011.05.02 14:21 GMT+1 óra  
Nem lehet, de ennek még sok hátrányát nem éreztem
(ಠ ›ಠ) Stewie!

   
terbed - Tag | 233 hsz       Online status #151469   2011.05.02 13:57 GMT+1 óra  
Úgy hallottam, hogy c++-ban nem lehet a konstruktorokat láncolni. Ez igaz?
Tehát erre gondolok, C#-ban:
Kód:
        public Motorcycle(int intensity)
            :this(intensity,""){}

        public Motorcycle(string name)
            :this(0,name){}

        public Motorcycle(int intensity, string name)
        {
            if (intensity > 10)
            {
                intensity = 10;
            }
            driverIntensity = intensity;
            driverName = name;
        }

Ugye az 1. és 2. konstruktor csak a 3. konstruktor megfelelő részét futtatja le.
   
fpeti - Törzstag | 1295 hsz       Online status #151231   2011.04.26 00:02 GMT+1 óra  
Hátha valakinek hasznos (win32):
WM_KEYDOWN-nál pl a lparam-mal le lehet ezzel kérdezni a lenyomott bill. nevét:
(keyboard remapping-nál jól jön.)
Kód:
GetKeyNameText(lparam,otuputstr,strmaxlen);

forrás: GameDev
   
Wolfee - Törzstag | 1337 hsz       Online status #150932   2011.04.20 19:10 GMT+1 óra  
jó, ez már kezd szakmai f*szverésbe átmenni, amikor mindenki érti, hogy miről van szó, csak a szavakon lovagolunk
FZoli jóváhagyásával XD

   
Pretender - Törzstag | 2498 hsz       Online status #150928   2011.04.20 18:25 GMT+1 óra  
én beírtam a google-ba, hogy c++ constructor, és ott volt persze nem olvastam el, csak belenéztem a példakódba, és hát az úgy működik

   
Joga - Törzstag | 1791 hsz       Online status #150925   2011.04.20 17:27 GMT+1 óra  
default konstruktor alatt valószínüleg paraméter nélküli konstruktort ért

"A default constructor is a constructor that either has no parameters, or if it has parameters, all the parameters have default values."
"In C++, the standard describes the default constructor for a class as a constructor that can be called with no arguments"

Így ezeket találtam
(ಠ ›ಠ) Stewie!

   
Asylum - Törzstag | 5512 hsz       Online status #150924   2011.04.20 17:07 GMT+1 óra  
Ezexerint szintén baromságot ir, mert a másik sorban a copy konstruktor hivodik meg; amit ha explicit nem adsz meg akkor szintén legenerálódik, tehát az is default (copy) konstruktor.

Annyira szeretem hogy a net televan ilyen ál-szakmai cikkekkel. Hogy találjátok meg ezeket?

Egyáltalán mi az, hogy "our default constructor"? Ez olyan mintha azt mondanám, hogy "az én fordító által generált konstruktorom"...
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bálint - Tag | 30 hsz       Online status #150923   2011.04.20 16:52 GMT+1 óra  
Most már világos, csak a példakód zavart be
Kód:
Point p;              // calls our default constructor
Point s = p;          // our default constructor not called.

   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [143]