// fa1.h - a dynamic array of float using a subscripting
// object

#include <iostream.h>

class fa_index
	{
	friend class float_array;
public:
	fa_index &operator=(float f);
	operator float();
private:
	fa_index(float_array *f, size_t i);
	float_array *fa;
	size_t ix;
	};

class float_array
	{
	friend class fa_index;
public:
	float_array(size_t n = 0);
	float_array(const float_array &fa);
	~float_array();
	float_array &operator=(const float_array &fa);
	float operator[](size_t i) const;
	fa_index operator[](size_t i);
	inline size_t length() const;
private:
	void extend(size_t i);
	float *array;
	size_t len;
	};

ostream &operator<<(ostream &os, const float_array &fa);

inline size_t float_array::length() const
	{
	return len;
	}

