مؤشر لعنصر في التكرار على الأمراض المنقولة جنسيا :: قائمة
سؤال
وأنا أعمل على لعبة بسيطة للغاية ولدي مجموعة الأمراض المنقولة جنسيا :: قائمة الكائنات التي تتعلق عبي. أنا أعلن ذلك على النحو التالي:
std::list<Target> targets;
وعندما أعاد أكثر من ذلك، وذلك باستخدام
for (std::list<Target>::iterator iter = targets.begin(); iter != targets.end(); iter++) {
Target t = *iter;
t.move();
}
وبلدي الأشياء لا يتم تحديثها على واجهة المستخدم الرسومية. ومع ذلك، لتحل محل حلقة بالتكرار مع targets.front().move()
، يا كائن واحد يتحرك بشكل صحيح. وأعتقد أن هذا هو لأنني لا بالتكرار عبر جمع باستخدام المؤشرات. هل يستطيع أحد أن يفسر كيف يتم ذلك؟ شكرا.
المحلول
وأنت تقوم بنسخ الكائنات، أن تفعل ذلك بهذه الطريقة:
*iter.move()
إذا كنت تستخدم Target t = *iter;
التي تبذلونها في الأساس نسخة من الكائن ونقله، بدلا من الانتقال الكائن المقصود.
وكما قال xtofl (شكرا) يمكنك الحصول على إشارة كذلك.
Target &t = *iter;
t.move();
لا تنتمي إلى StackOverflow