Gần đây, tôi đã nhận được tệp kết xuất sự cố từ một khách hàng. Tôi có thể theo dõi vấn đề xuống một lớp có thể chứa dữ liệu không chính xác, nhưng tôi chỉ có một con trỏ void đến lớp, không phải là một con trỏ thực (con trỏ void đến từ một thuộc tính window, do đó nó là một con trỏ void) . Thật không may, lớp mà tôi muốn để cast con trỏ đến, là trong một không gian tên vô danh, như thế này:Gỡ lỗi dữ liệu trong 'các không gian tên ẩn danh' (C++)
namespace
{
class MyClass
{
...
};
}
...
void *ptr = ...
// I know ptr points to an instance of MyClass,
// and at this location I want to cast ptr to (MyClass *) in the debugger.
Sử dụng "ptr" trong cửa sổ xem nếu Visual Studio 2005 chỉ cho thấy giá trị con trỏ. Nếu tôi sử dụng "(MyClass *) ptr", trình gỡ lỗi cho tôi biết nó không thể truyền cho nó.
Làm cách nào để truyền ptr tới con trỏ MyClass? Lưu ý: Cuối cùng tôi có thể sử dụng không gian tên ngớ ngẩn (như tên của tệp nguồn), và sau đó sử dụng "không gian tên đang sử dụng", nhưng tôi mong đợi các giải pháp tốt hơn.
Btw, VS 2008 trưng bày cùng một vấn đề. Tôi muốn khuyên bạn nên gửi cho MS một lưu ý. – gimpf