2009-08-05 37 views

Trả lời

10

Lớp CDC có operator HDC() được xác định cho phép trình biên dịch chuyển đổi một đối tượng CDC thành HDC một cách hoàn toàn. Do đó nếu bạn có CDC * và một hàm có HDC thì bạn chỉ cần dereference con trỏ và gửi nó đến hàm.

+0

Ok, cảm ơn bạn! Tôi không chạy vào từ khóa 'nhà điều hành' quá nhiều, vì vậy nó đã ném tôi đi. – samoz

2

Chỉ định nó.

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

CDC là một lớp C++ - cho phép tính xấp xỉ hợp lý - đóng gói HDC, là một xử lý cho bối cảnh thiết bị.

Tài liệu mà bạn liên kết để mô tả chuyển đổi operator, là cấu trúc C++ mà các lớp có thể cung cấp để cho phép chuyển đổi tiềm ẩn từ một thể hiện của lớp sang một loại khác. Trong trường hợp này, kết quả chuyển đổi ngầm định trong tay cầm bên dưới (HDC) mà cá thể CDC đóng gói.

Bạn có thể thực hiện chuyển đổi bằng cách sử dụng phiên bản CDC ở bất kỳ đâu cần được chuyển đổi thành HDC.

đơn giản nhất:

void f(const CDC& cdc) 
{ 
    HDC hdc = cdc; 

    // use hdc here 
} 
14

Khi bạn đã CDC đối tượng nó sẽ được ngầm chuyển đổi sang HDC khi cần thiết:

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

Nếu bạn có con trỏ tới CDC đối tượng sau đó sử dụng chức năng GetSafeHdc sẽ xem xét thêm rõ ràng:

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

GetSafeHdc() đã làm các trick, cảm ơn. – TechNyquist

Các vấn đề liên quan