Я пытаюсь напечатать все элементы массива в классе, но не знаю, с чего начать.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;
}
Я не понимаю вопрос, но, возможно, вы просто должны изменить цикл в '' оператора << для 'для (INT I = 0; я
user463035818
1. Я знаю размер массива как' capacity'; как я могу использовать это в 'ostream & operator << (ostream & os, const DoubleStack & rhs)' 2. Я знаю, что 'std: cout' не будет работать, потому что я попробовал' cout << s1', где s1 - новый DoubleStack, и это не сработает. – ksavs