Tôi có một lớp container, chúng tôi sẽ gọi nó làcon trỏ làm thông số mẫu?
template <class T> CVector { ... }
tôi muốn làm một cái gì đó khác nhau với lớp này khi T là một kiểu con trỏ, ví dụ một cái gì đó dọc theo các dòng:
template <class T*> CVector< SomeWrapperClass<T> >;
trong đó SomeWrapperClass đang chờ loại thông tin được trỏ đến làm thông số của nó. Thật không may, cú pháp này không hoàn toàn làm việc và với một số đào, tôi đã không tìm thấy một cách tốt để có được một cái gì đó như thế này làm việc.
Tại sao thực hiện theo cách này? Tôi muốn thay đổi, trong một ứng dụng rất lớn, cách một số thùng chứa của chúng tôi hoạt động khi loại chúng chuyên biệt là con trỏ chứ không phải con trỏ - và lý tưởng, tôi muốn làm điều đó mà không thay đổi ~ 1.000 địa điểm trong mã có những thứ như CVector<Object*>
vs CVector<int>
hoặc một số trò chơi như vậy và chơi với các chuyên môn từng phần dường như là cách để đi.
Tôi có bị nứt ở đây không?
Tôi nghĩ cần có nhiều ngữ cảnh hơn cho những gì bạn đang làm. Vậy, cái này là gì? Lớp bao bọc "Một số" là gì? Và 'CVector' là gì? Không phải là một 'std :: vector' được sáng tạo lại, tôi hy vọng. – GManNickG
Không, không phải - tôi đang sử dụng các tên trừu tượng cho các lớp cố ý - nhưng về cơ bản lớp bao bọc lấy một kiểu không phải con trỏ làm tham số của nó. CVector có thể lấy bất kỳ kiểu kiểu nào - tôi chỉ muốn sử dụng lớp wrapper khi vector được đưa ra một kiểu con trỏ. –
@D Garcia: Tôi không hiểu những gì bạn muốn, chính xác. Nếu T là một con trỏ, CVector nên làm gì? – rlbond