Hey, Trong C++, tôi có một vector loại:Vector vòng lặp Đúc
vector<BaseClass*> myVector;
Trong đó, tôi chèn (push_back) gợi ý của các lớp thừa vào nó.
Bây giờ, tôi muốn bật lại phần tử của nó vì vậy tôi làm điều này:
vector<ADlgcDev*>::iterator iter;
for (iter = myVector.rbegin(); iter != myVector.rend(); iter++)
{
// but before I pop it, I need to shutdown it down
// so I cast this
// but this way, I'm unable to call the function
(DerivedClass*(*iter))->Shutdown();
myVector.pop_back();
}
nhưng khi đề cập đến trong các ý kiến trước khi tôi bật nó, tôi cần phải gọi Shutdown() phương pháp của nó và các diễn viên cũng không hoạt động bình thường. Bất kỳ độ phân giải nào? hoặc là không thể?
BTW, vòng lặp của bạn bị hỏng - hoặc bỏ vòng lặp 'for' của bạn và xóa' myVector.pop_back() ', hoặc bỏ nó vào và thay đổi thành vòng lặp' while' để kiểm tra phần tử 'back()' mỗi lần như sbi cho thấy. –
Vòng lặp của tôi bị hỏng như thế nào? – akif
Nếu bạn tinh thần thực hiện các bước với một mảng gồm 10 mục, bạn sẽ thấy rằng bạn chỉ xử lý ngày 5 đầu tiên, bởi vì vào lúc đó bạn đã xóa 5 số cuối cùng bằng 'pop_back()'. –