مؤشر لعنصر في التكرار على الأمراض المنقولة جنسيا :: قائمة

StackOverflow https://stackoverflow.com/questions/1803281

سؤال

وأنا أعمل على لعبة بسيطة للغاية ولدي مجموعة الأمراض المنقولة جنسيا :: قائمة الكائنات التي تتعلق عبي. أنا أعلن ذلك على النحو التالي:

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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top