करता है मैं एक vector
कि सार प्रकार Rock
की ओर इशारा रखती है:पुनरावृत्ति एक वेक्टर कारण त्रुटि के माध्यम से, लेकिन मानक के लिए लूप
vector<Rock*> rocks;
पुनरावर्तक के साथ वेक्टर के माध्यम से और फिर मैं पाश का उपयोग करने का प्रयास करें वस्तु (एक गैर सार वर्ग कि Rock
फैली) iterator के माध्यम से, मैं XCode 4 में एक 'EXC_BAD_ACCESS' त्रुटि मिलती है:
vector<Rock*>::iterator rockIter;
for (rockIter = rocks.begin(); rockIter != rocks.end(); ++rockIter)
{
bullet.hit(*(*rockIter));
}
लेकिन यह सामान्य रूप से की तरह के माध्यम से पाशन कोई समस्या नहीं है:
for (int i = 0; i < rocks.size(); i++)
{
bullet.hit(*rocks[i]);
}
समारोह hit()
लगता है:
bool Bullet::hit(Rock & rock)
मैंने सोचा था कि *(*rockIter)
और *rock[i]
एक ही बात करना होगा लेकिन स्पष्ट रूप से वे नहीं है। अलग क्या है, और मैं *rock[i]
के साथ एक इटरेटर के माध्यम से वेक्टर में ऑब्जेक्ट का संदर्भ कैसे पारित कर सकता हूं?
यह उल्लेखनीय है कि आप कच्चे पॉइंटर्स के बजाय स्मार्ट पॉइंटर्स के वेक्टर का उपयोग करना चाहेंगे। वे आपके जीवन को इतना आसान बनाते हैं। – chris