Еще один вопрос списка C ++ - PullRequest
0 голосов
/ 16 апреля 2011

Я застрял здесь, и я старался изо всех сил, но я не мог решить это.

Я хотел бы сделать это:

list<Enemy> *_myEnemies;
Enemy* _myEnemiesPushBack;

_myEnemiesPushBack = new Enemy;
_myEnemiesPushBack->load("earth.png");
_myEnemiesPushBack->setPos(150, 150);
_myEnemies->push_back(_myEnemiesPushBack); //error here

Ошибка:

\ init.cpp (41): ошибка C2664: 'void std :: list <_Ty> :: push_back (_Ty &&) ': не может преобразовать параметр 1 из 'Враг * 'to' Enemy && '1> с 1> [1> _Ty = Enemy 1>
] 1> Причина: невозможно конвертировать от «Враг *» до «Враг» 1>
Ни один конструктор не может взять источник тип или перегрузка конструктора разрешение было неоднозначным

Спасибо!

Ответы [ 3 ]

3 голосов
/ 16 апреля 2011

Вам вообще не нужны указатели.

std::list<Enemy> myList;

Enemy en;
en.load("earth.png");
en.setPos(150,150);
myList.push_back(en);

typedef std::list<Enemy>::iterator iterator;
for (iterator it = list.begin(), end = list.end(); it != end; ++it) {
  it->move();
}

Я бы также посоветовал вам взять где-нибудь книгу о C ++ (для начинающих) или о STL, если это ваше конкретное препятствие. К сожалению, C ++ - это не то, с чем вы можете экспериментировать без руководства (сначала, по крайней мере).

2 голосов
/ 16 апреля 2011

Вы потеряли *

list<Enemy*> _myEnemies;
Enemy* _myEnemiesPushBack;

_myEnemiesPushBack = new Enemy;
_myEnemiesPushBack->load("earth.png");
_myEnemiesPushBack->setPos(150, 150);
_myEnemies.push_back(_myEnemiesPushBack); //error here
0 голосов
/ 16 апреля 2011

У вас есть список врагов, и вы пытаетесь вставить указатель на врага в этот список. Они не одного типа.

Взгляните сюда: Указатели @ cplusplus

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...