У меня возникли проблемы с перегрузкой моего operator<<
для печати содержимого массива неизвестного размера. Я искал решение, но единственное, которое я нашел, потребовало бы от меня поместить все мои личные элементы данных в структуру (что мне кажется немного ненужным). Я не могу отредактировать функцию, чтобы сделать ее другом или изменить *q
на &q
(или константу).
Вот мой код перегрузки ‹‹:
ostream& operator<<(ostream& out, Quack *q)
{
if (q->itemCount() == 0)
out << endl << "quack: empty" << endl << endl;
else
{
int i;
int foo;
for (int i = 0; i < q->itemCount(); i++ )
{
foo = (*q)[i];
out << *(q + i);
} // end for
out << endl;
}
return out;
}
И вот мои личные данные:
private:
int *items; // pointer to storage for the circular array.
// Each item in the array is an int.
int count;
int maxSize;
int front;
int back;
Вот как вызывается функция (это нельзя редактировать):
quack = new Quack(QUACK_SIZE);
//put a few items into the stack
cout << quack;
Вот как должен быть отформатирован вывод:
quack: 1, 2, 3, 8, 6, 7, 0
а если массив пустой, то
quack: empty
Любая помощь будет оценена. Спасибо!
operator <<
не может быть другом, зачем перечислять личные поляQuack
? Какие общедоступные методыQuack
позволяют получить доступ к отдельным элементам илиQuack::items
и к количеству элементов? - person outis   schedule 29.10.2011Quack
, вам нужно указать это в своем вопросе. - person Emile Cormier   schedule 29.10.2011q
какQuack
, а неQuack*
, и (б) функция не должна приниматьQuack*
в любом случае. - person Lightness Races in Orbit   schedule 29.10.2011