Tôi mới dùng C++, và tiếc là tôi không thể ngừng suy nghĩ trong C# (ngôn ngữ cũ của tôi). Tôi đọc một số sách, diễn đàn và trang web tham khảo C++, nhưng tôi không thể tìm thấy câu trả lời cho câu hỏi của mình, vì vậy tôi nghĩ tôi cũng có thể thử ở đây trước khi từ bỏ và viết gì đó xấu xí.C++ đúng cách để trả lại bộ sưu tập chung loại
Ok, chúng ta có thể bắt đầu. Tôi có một lớp học với phương pháp trừu tượng succesorsFunction và tôi muốn nó trả về bộ sưu tập các con trỏ đến Tiểu bang. Tôi không muốn ép buộc những người triển khai vào một container cụ thể; Tôi thà để họ chọn (vectơ, danh sách, vv).
Vì vậy, nó trông như thế này:
class Problem
{
public:
virtual list<const State*>::iterator succesorsFunction(const State &state, list<const State*>::iterator result) const = 0;
};
các vấn đề ở đây là việc sử dụng rõ ràng của danh sách. Làm thế nào để bạn làm điều đó trong C + +?
Tôi đã nghĩ đến việc sử dụng mẫu, nhưng sau đó tôi gặp phải hai vấn đề: 1) Có vẻ như bạn không thể làm điều đó bằng phương pháp trừu tượng (hoặc tôi sai?) 2) Làm cách nào để nói mẫu cho tiểu bang?
kiểu xóa dãy Boost.Range của thể giúp đây. – Xeo
Bạn có thể mở rộng về chức năng này và chức năng ảo được cho là đạt được không? Có thể có các cách tiếp cận khác. –
Vì vậy, bạn muốn trả lại một cái gì đó tương tự như 'IEnumerable '? –
svick