Я начинаю с C++ и теперь имею проблему с одним из моих классов. У меня есть векторный список моего класса Sprite
, и я хочу получить один из элементов в списке и передать его параметру метода другого класса, но он просто скажет мне Subscript range is out of vector
. Я просмотрел список, чтобы увидеть, действительно ли он содержит какой-либо элемент, и это было правильно, список отлично работает.Получение экземпляров пользовательских классов
Мой список:
vector<Core::Graphic::cSprite> Sprites;
Мой метод:
Core::Logic::cGameObject::cGameObject(std::string Name, Core::Graphic::cSprite* Sprite, float X, float Y, int Depth)
{
// Set fields
this->Name = Name;
this->Sprite = *Sprite;
// Add to active sprites
for(int i = 0; i < this->Sprite.Images.size(); i++)
{
// Create temporaroy sprite
sf::Sprite tempSprite;
tempSprite.SetImage(this->Sprite.Images[i]);
this->ActiveSprite.push_back(tempSprite);
}
this->X = X;
this->Y = Y;
this->Depth = Depth;
this->ImageIndex = 0;
this->ImageNumber = this->Sprite.SubFrames;
}
Мой спрайт конструктор:
Core::Graphic::cSprite::cSprite(std::string Name, vector<std::string> ImagesFileNames)
{
// Check input
if(Name != "" && ImagesFileNames.max_size() > 0)
{
this->Name = Name;
for(int i = 0; i < ImagesFileNames.size(); i++)
{
sf::Image tempImage;
if(tempImage.LoadFromFile(ImagesFileNames[i])){
this->Images.push_back(tempImage);
}
}
this->SubFrames = this->Images.max_size();
}
}
У меня есть cGameObjectManaher
класс для управления игровых объектов и имеет метод, как показано ниже:
Game.GameObjectManager.AddGameObject("obj_intro_1", &Game.SpriteManager.Sprites[0], 0, 0, 0);
Я проверил все в своих кодах, но ничего не превышает их. Я думаю, что это проблема кода, который я реализовал.
Спасибо.
Вы действительно инициализировали 'Game.SpriteManager.Sprites' перед его использованием? –
Точно, что я использую 'Game.GameObjectManager.AddGameObject'. Я даже прокомментировал весь кусок конструктора класса объектов игры, чтобы узнать, что не так, но он просто продолжает давать ошибку. – MahanGM
Да, я не писал их здесь. Все правильно, но этот список - настоящая проблема! – MahanGM