Im пытается вызвать функцию:Стрим вставка перегружать C++
friend ostream& operator<<(ostream& out, stack::myItem& theItem);
, что является общественным к моему объекту стека:
class stack
{
public:
stack(int capacity);
~stack(void);
void method1();
...
private:
struct myItem
{
int item;
};
...
public:
friend ostream& operator<<(ostream& out, stack& s);
friend ostream& operator<<(ostream& out, stack::myItem& theItem);
};
То, что я знаю, что эта функция ниже:
ostream& operator<<(ostream& out, stack& s)
{
if (s.count == 0) // then no elements have been counted.
out << "\nstack: empty\n\n";
else
{
out << "\nstack: ";
for (int i = 0; i < s.count; i++)
{
if (i < s.count-1)
out << s.myItem[i].item << ", ";
else out << s.myItem[i].item;
}
out << "\n\n";
}
return out;
}
с данным оператором: стек s = стек (7); функция, указанная выше, называется всякий раз, когда я использую: cout < < s;
Как я могу назвать функцию ниже?
ostream& operator<<(ostream& out, stack::myItem& theItem)
out << theItem.item;
return out;
}
Потому что, когда я пытаюсь сделать следующее:
ostream& operator<<(ostream& out, stack& s)
{
if (s.count == 0) // then no elements have been counted.
out << "\nstack: empty\n\n";
else
{
out << s;
}
return out;
}
Это приводит к аварии, так как заявление из < < s; будет бесконечным .. При отладке коды никогда не будет идти к следующему оператору ...
вы могли бы более подробно остановиться на для прекращения Conditon? – user40120
Если вы имеете в виду примечание в конце, код без условного в цикле более четко указывает на намерение; вы печатаете элементы 0- [end-1] с запятой, затем последний элемент с новой строкой –