Anonymní profil Jura – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jura – Programujte.comAnonymní profil Jura – Programujte.com

 

Příspěvky odeslané z IP adresy 78.80.45.–

Jura
C / C++ › winapi
27. 1. 2011   #138205

Zdravím,

jak už psal yaqwsx, má to co dočinění s OOP a ukazateli na funkce. Jde o to, že kompilátor do všech členských (nestatických) metod dané třídy, přidavá argument - ukazatel na danou třídu. Příklad:



class Foo
{
public:
void fooMethod(int a) {
//...
}
};
// volani
Foo f;
f.fooMethod();

A mužeš si to třeba představit tak, že kompilátor z toho uděla něco jako toto:


void Foo::fooMethod(Foo* const this) {
//...
}
//volani
Foo f;
Foo::fooMethod(&f);



A jak to souvisí s ukazateli na funkce?
Je potřeba si uvědomit, že funkce má nějakou signaturu. Pokud chceš nastavit funkci nějakému ukazateli, nesmíš porušit signaturu. A zde je kámen úrazu. Ačkoliv sám ve třídě máš funkci fooMethod a ukazetel na void (*pFunc)(), tak kompilátor potichu rozšiřil fooMethod o jeden skrytý argument.

Proto má C++ ukazatel na metody. Takže když chceš předat metodu třídy do C-like ukazatele na funkci, tak se to obchází nejčastěji přes statické metody. Nicméně zde je zase problém, že statická metoda nemůže, bez instance dané třídy, přístupovat ke členským (nestatickým) atributům dané třídy. Tudíž musíš mít nějaký mechanismus, jak dostat referenci na instanci tvé třídy do statické metody. A to lze buď jak naznačil yaqwsx, nebo pokud, když už jsi ve WinApi, tak pak je velice dobrý článek: http://www.zezula.net/cz/prog/wndproc_v_tride.html

Jura
C / C++ › Výběr kontejneru
7. 11. 2010   #135615

Čau,

osobně bych si udělal nějaký adapter(= vlastni definované rozhraní, ať případné změny neovlivní celý projekt) nad těmi kontejnery a v první implementaci prostě zkusil vector. A teprve až bych zjistil případné výkonostní problémy, tak bych se zamýšlel nad jiným kontejnerem(uvažoval jsi o hashovací tabulce?).

Jura
C / C++ › Modulárny návrh aplikácie/zá…
23. 10. 2010   #134873

Ani nemusíš chodit příliš daleko. Přímo zde, na tomto serveru, vyšel už před nějakým časem článek o tvorbě architektury podporující moduly. Neříkám, že je to nejlepší řešení, nicméně jediné, co by sis z toho měl odnést, je spíše jen myšlenka. Dále MS píše v popisu, že technologie COM je platform independent. Jak je to ve skutečnosti, ti nepovím. Možna liborb, doplní. Ale jinak, v případě Javy, se spíše porozhlédni po nějakém frameworku, který alespoň zhruba odpovídá tvým potřebám.

Jo a ještě link na článek: http://programujte.com/?akce=clanek&cl=2006041802-c#-aplikace-s-podporou-pluginu

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý