我無法重載我的< <運算符來打印未知大小的數組的內容。我搜索了一個解決方案,但是我發現的唯一一個需要我將所有私有數據成員放在一個結構體中(這對我來說似乎有點不必要)。我無法編輯函數使其成爲朋友,或者將* q更改爲& q(或常量)。如何使用數組重載ostream <<運算符?
這裏是我的< <超載代碼:
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',以及項目數量? – outis
@snazzy:如果你不能修改'Quack',那麼你需要在你的問題中這麼說。 –