Питане

10 отговора 0 прегледа
#1

Питане

В хедъра на CMyForm имам :

static std::map<HWND, CMyForm*> s_mapInstances;

В имплементацията на OnInitDialog имам:

s_mapInstances[m_hWnd] = const_cast<CMyForm*>(this);


Може ли (абе май не може де) да избегна const_cast и въобще има ли нещо нередно в този код.

Отговор
в отговор на query #2

Re: Питане

НЕма ли начин самото MFC да ти върне формата от ХВНД-то?

Отговор
в отговор на query #3

Re: Питане

абе за къв чеп изобщо се налага каст? нещо на тарикат са праиш май, а не знаеш за динамичен каст, лошо

Отговор
в отговор на ГHУCEH®ГHOM #4

Re: Питане

защото явно не знаеш че this е константен указател.

Отговор
в отговор на Cин Mapмoт #5

Re: Питане

не съм на MFC а ATL и незнам да има такава възможност

Отговор
в отговор на query #6

Re: Питане

Неук келеш, константен е само в конст мембър. И ако това ти е ситуацията, имаш точно два варианта - мапа да е към конст пойнтери, или кастваш през воид*. За измекяр като теб бих препоръчал втория начин.

Отговор
в отговор на ГHУCEH®ГHOM #7

Re: Питане

Абе хем не знае хем обижда.

Ей, ГHУCEH ГHOM this е първия аргумент на всяка не статик мембър функция и е деклариран така:

CMyClass *const this;


А в константна функция е деклариран така:
const CMyClass *const this;


Такато казах винаги е константен указател, а не че винаги сочи към константен обект.
Ако не вярваш питай батковците.

Отговор
в отговор на query #8

Re: Питане

Я, то от лаф на лаф току сме се напсували. Айде, със здраве - четеш, значи има надежда за тебе.

Отговор
в отговор на query #9

аз така и не разбрах за какво ти е конста

искаш мап с който от HWND да получиш на коя форма е. за какво ти е конст при попълването му? ако искаш мапа да дава конст указател, не трябва ли в аргументите на темплейта да напишеш конст?




NE SUTOR ULTRA CREPIDAM
Отговор
в отговор на zaphod #10

Re: аз така и не разбрах за какво ти е конста

Прав си. Не ми трябва конст указател.
И аз се зачудих защо ми даваше грешка без конст_каст, но не съм обърна внимание явно за друга грешка е ставало дума или съм се разсеял - както и да е.
Става и без кастването .

Иначе при: std::map<HWND, CMyForm *const> , не мога да пълня мапа.

Еррор: l-value specifies const object !

Отговор
в отговор на query #11

Re: Питане

оправи си циклите и декларациите

Kato se znam kuv inzener sum ....me e strah...
Отговор