Я пытаюсь итерацию через std::list
(содержащих) объектов и напечатать некоторые методы, но жалобы компилятора, 'print': is not a member of 'std::shared_ptr<A>'
Однако если я создаю объект std::shared_ptr<A> animal(*it);
и вызвать animal.print()
он будет работать просто отлично, почему это? ниже функция у меня возникают проблемы с (это также небольшой часть моей очень большой программы, включающей много полиморфизма)печатные элементы станд :: список с использованием итератора C++
friend std::ostream& operator<<(std::ostream& out, const Hand& _hand) {
std::list< std::shared_ptr<A>>::const_iterator it = _hand.hand.begin();
std::shared_ptr<A> animal(*it);
animal.print(); //workss
while (it != _hand.hand.end()) {
it->print(); //doesn't work
++it;
}
return out;}
list
я перебор имеет типа A
(который является абстрактным) и содержат объекты его производных классов.
AFAIK 'animal.print()' не должен работать. –
Компилятор не жаловался! – Bobby
Это должно было быть сделано. –