クラス内の配列のすべての要素を出力しようとしていますが、開始位置はわかりません。C++:ダイナミックな配列クラスを表示
試行1:これはクラスなので、Coutは機能しません。 coutの定義はありません。 Try 2:ostreamのオーバーロード< <演算子は、単に各要素のforループを作成するためのインデックスがないため動作しないようです。 Try 3:インデックス付きの配列を使用するコピーコンストラクタに似た新しい関数を定義する方法はありますか?
私はC++の初心者ですから、何か助けてください&の説明に感謝します。
// stack.h -- class definition for the stack array
#include <stdlib.h>
#include <iostream>
using namespace std;
class DoubleStack
{
private:
// variables:
double *data; // pointer to the actual array of data
size_t stack_size; // Capacity of stack
size_t tos; // Top of stack. tos==0 ==> empty stack
public:
DoubleStack(size_t capacity); // Constructor
DoubleStack(const DoubleStack& rhs); // Copy Constructor
~DoubleStack(void); // Destructor
DoubleStack& operator=(DoubleStack& rhs); // Assignment operator
friend ostream& operator << (ostream& os, const DoubleStack& dbl); //Stream insertion operator for Doublestack
};
た.cpp定義
#include "dblstk.h"
DoubleStack::DoubleStack(size_t capacity) // create an empty stack
{
data = new double[capacity];
stack_size = capacity;
tos = 0;
}
DoubleStack::DoubleStack(const DoubleStack& rhs)// copy constructor
{
data = new double[rhs.stack_size];
stack_size = rhs.stack_size;
tos = rhs.tos;
for (int i = 0; i < stack_size; i++)
{
data[i] = rhs.data[i];
};
}
DoubleStack::~DoubleStack(void) // Destructor
{
delete[] data;
}
DoubleStack& DoubleStack::operator=(DoubleStack& rhs) // Assignment operator
{
delete[] data;
data = new double[rhs.stack_size];
stack_size = rhs.stack_size;
tos = rhs.tos;
for (int i = 0; i < stack_size; i++)
{
data[i] = rhs.data[i];
};
return *this;
}
ostream& operator << (ostream& os, const DoubleStack& dbl)
{
for (int i = 0; i<capacity; i++)
{
os << dbl[i];
} // THIS IS WRONG
return os;
}
i]; ' – user463035818
1.私は配列のサイズを' capacity'と知っています。どうすれば 'ostream&operator <<(ostream&os、const DoubleStack&rhs)'でそれを使うことができますか? 2.私は 'cout << s1'を試したので' std:cout'は動作しません。s1は新しいDoubleStack、それは動作しません。 – ksavs