MFC Class, Static,

MFC Class, Static,
2013-01-11T08:34:39+01:00
2013-02-19T09:50:13+01:00
2022-11-28T07:45:40+01:00
h.jocika
Létrehoztam egy MFC alkalmazást.
Az alkalmazás dialogusa a Ctest2Dlg osztályba került.
List Controlt + Button van rajta.

Button lenyomásakor meghívok egy osztályon kívüli függvényt.

a Ctest2Dlg osztályban létrehoztam egy InsertList függvényt ami a list controlt kezeli.

Az osztályon kívüli függvényből az InsertList-et csak úgy tudom elérni, ha a .h fájlban az osztály definiciónál a "static" tulajdonságot megadom.

static void InsertList(int x);

Így viszont az InsertList-ben nem tudom elérni a list controlt

Ctest2Dlg::FileList.InsertItem(&lvItem);

Mi lehet a megoldás?

tulajdonképpen azt szeretném, hogy osztályon kívülről tudjam piszkálni a list controlt

Köszönöm
Mutasd a teljes hozzászólást!

  • Ha static-ként használod, akkor úgy fordítódik le mint egy akármilyen függvény. Tk. semmi köze az osztályodhoz. De most ne térjünk ki erre.
    Tehát nekem nem kell a static.
    Szóval, keress egy ilyesmi sort:
    Ctest2Dlg valami;
    Majd így fogod tudni használni:

    valami.FileList.InsertItem(&lvItem);

    De azért rádférne egy kis keresgélés a neten, meg pár alapfogalom elsajátítása.
    Mutasd a teljes hozzászólást!
  • Ha ragaszkodsz a statichoz, akkor kelleni fog egy setter / getter az listcontrol-hoz, plusz módosítani kell az insertlist-et:
    static void InsertList(CTest2Dlg* dialog, int x); ... CTest2Dlg izeke; CTest2Dlg::FileList.InsertItem(&izeke, &lvItem);
    Vagy ha nem kell mindenképpen static, akkor használd friend-ként. Hívási konvenció stimmel, de hozzáfér a class privát memberjeihez.
    friend void InsertItem(int x);
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd