Мне нужно распечатать кучу объектов из динамического массива с помощью перегруженного оператора < <.Печать динамического массива объектов с помощью перегруженного оператора << в C++
Я перегрузил < < оператор так:
ostream& operator<<(ostream& os, Person* dt)
{
return os << dt->getName();//getName returns a char*
}
Теперь это прекрасно работает с регулярными указателями, однако, как только я пытаюсь сделать что-то вроде этого:
Person *p = new Person("Dany", 4);
Object** obj=new Object*[sizeof(p)];
obj[0] = p;
cout << obj << endl;
I получить бессмысленное значение. Имейте в виду, что класс Person является производным от абстрактного класса Object.
Ну, '' имеет '' элемент 'getName()' и есть ли у вас 'operator <<' для 'Object *'? Если нет, он просто напечатает значение указателя - некоторый адрес памяти, например '0x20a1937d'. – BoBTFish
Вы только перегрузили оператор вывода для указателей на 'Person', а не указатель на указатель на' Object'. –
Кроме того, 'new Object * [sizeof (p)]' is * very * suspect, и не будет делать то, что вы думаете, что он делает (я думаю). –