Tôi đang cố gắng chuyển một thư viện cũ (không sử dụng các không gian tên theo như tôi có thể biết) cho các trình biên dịch hiện đại. Một trong những mục tiêu của tôi không thể nói sự khác biệt giữa System :: TObject và :: TObject (không có vùng tên). Hệ thống :: TObject có nguồn gốc từ trình biên dịch.Làm cách nào để xử lý xung đột tên lớp khi chuyển mã cũ?
Tôi đã thử sử dụng chỉ thị, tức là sử dụng :: TObject;
Nhưng điều đó không thực hiện được.
Giải pháp hiển nhiên là bọc tất cả thư viện ban đầu vào một không gian tên và sau đó gọi nó theo tên - nên tránh sự mơ hồ. Nhưng đó có phải là giải pháp khôn ngoan nhất? Còn có những giải pháp nào nữa ko? Thêm một không gian tên sẽ yêu cầu thay đổi một loạt các tập tin và tôi không biết nếu nó sẽ có hậu quả không mong muốn sau này.
điều này sẽ làm cho trình biên dịch tạo ký hiệu tiền tố bằng oldlib, sẽ không có trong thư viện cũ, dẫn đến 'biểu tượng bên ngoài chưa được giải quyết": __thiscall oldlib :: A :: ~ A (void) "(? ? 1A @ oldlib @@ QAE @ XZ) ' – xtofl