클래스의 모든 요소를 인쇄하려고하지만 시작 위치를 모릅니다.C++ : 동적 배열 클래스 표시
시도해보기 1 : Cout은 클래스이므로 작동하지 않습니다. cout에 대한 정의가 없습니다. 시도 2 : ostream 오버로드 < < 연산자는 단순히 각 요소에 대한 for 루프를 만들 색인이 없기 때문에 작동하지 않는 것처럼 보입니다. 시도 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 = 0 int로 내가 ++; 나는
user463035818
1. 배열의 크기를 'capacity'로 알고있다. 어떻게 ostream & operator << (ostream & os, const DoubleStack & rhs)'에서 이것을 사용할 수 있습니까? 2.'cout << s1'을 시도했기 때문에'std : cout'이 작동하지 않을 것입니다. s1은 새로운 DoubleStack이고, 작동하지 않습니다. – ksavs