2009-08-05 20 views

cevap

10

HDM sınıfı operator HDC() derleyici dolaylı HDC bir CDC nesnesi dönüştürmek sağlayan tanımlamıştır. Dolayısıyla CDC * ve HDC alan bir işleviniz varsa, işaretçiyi işaretleyip işleve gönderin. makul bir yaklaştırma ile - - bir aygıt içeriğini için bir tanıtıcı bir HDC, kapsüller

+0

Tamam, teşekkürler! 'Operatör' anahtar kelimesine çok fazla girmem, bu yüzden beni attı. – samoz

2

Sadece atayın.

CDC cdc = something. 
HDC hdc = cdc; 
if (hdc != 0) 
{ 
    //success... 
} 
3

CDC C++ sınıftır.

Bağlamakta olduğunuz belge, sınıfın bir sınıf örneğinden başka bir türe bir örtülü dönüştürmeye izin vermek için sağlayabileceği bir C++ yapısı olan bir operator dönüşümünü açıklar. Bu durumda, örtük dönüştürme, CDC örneğinin kapsüllediği alttaki tutamacı (HDC) ile sonuçlanır.

Dönüştürmeyi CDC örneğini kullanarak gerçekleştirebilirsiniz, bunun için HDC ürününe dönüştürülmesi gerekir. En basit

:

Eğer CDC nesne, örtük HDC dönüştürülecektir var
void f(const CDC& cdc) 
{ 
    HDC hdc = cdc; 

    // use hdc here 
} 
14

gerektiğinde:

CDC dc; 
HDC hdc = dc; // HDC hdc = dc.operator HDC(); 

Eğer işaretçi için CDC nesne daha sonra bakacağız işlevi GetSafeHdc kullanarak varsa açık:

CDC* pdc = SOME; 
HDC hdc = pdc->GetSafeHdc(); 
+1

GetSafeHdc() hile yaptı, teşekkürler. – TechNyquist