Podwójne użycie własnego operatora.

0

Cześć. Dopiero uczę się C++, więc proszę o wyrozumiałość. Pewnie mój problem jest banalny. Nie potrafię tego wytłumaczyć inaczej niż w tytule - chciałbym podwójnie użyć własnego operatora. Oto przykład - stworzyłem pewną klasę i operator '<<<' :

#include <iostream>

using namespace std;

class Stack
{
	int n, max;
	float *tab;
	
public:
	Stack(int maximum=100)
	{
		max=maximum;
	}
	Stack(float a[], int size)
	{
		tab = new float [size];
		
		for(int i=0; i<size; i++)
		{
			tab[i]=a[i];
		}
		
		n=size;
		max=size;
	}
	Stack(float a[], int size, int maximum)
	{
		tab = new float [maximum];
		
		for(int i=0; i<size; i++)
		{
			tab[i]=a[i];
		}
		
		n=size;
		max=maximum;
	}
	
	void wypisz()
	{
		for(int i=0; i<n; i++)
		{
			cout << "Nr : " << i << " = " << tab[i] << '.' << endl;
		}
		
		cout << "Max: " << max << endl;
	}
	
	void operator << (float liczba)
	{
		if(n==max)
		{
			cout << "Nie mozna dodac liczby. Osiagnieto maksymalny rozmiar stosu." << endl;
		}
		else
		{
			tab[n]=liczba;
			n++;
		}
	}
};

A w funkcji main:

int main()
{
	float a[10]={5.5, 4.4, 3.3, 2.2, 1.1};
	int size = 5;
	int maximum=10;
	
	Stack stos(a, size, maximum);
	
	// stos<<6.6;
    stos<<6.6<<7.7;
	
	stos.wypisz();
	
	return 0;
}

chciałbym móc użyć nieskomentowanego zapisu, czyli: stos<<6.6<<7.7. Dla pojedynczego: <<6.6 działa bez problemu. Bardzo prosiłbym o pomoc. :-)

0
 void operator << (float liczba)

Chcesz wywołać operator<< na niczym?

0

Chciałbym jakby upchnąć zapis:

stos<<6.6;
stos<<7.7;

w jedno

stos<<6.6<<7.7;

ale rzeczywiście wygląda to jakbym wywoływał ten operator na niczym. :( A masz może dla mnie jakieś wskazówki jak mógłbym zmodyfikować kod? Bo jestem prawie pewny, że ten zapis stos<<6.6<<7.7 jest jakoś możliwy, tak?

0

I wszystko jasne. DZIĘKUJĘ! :)

1
DawidK napisał(a):

Cześć. Dopiero uczę się C++, więc proszę o wyrozumiałość.

To po co się bierzesz za przeładowywanie operatorów?
Pisałem to już wiele razy:
przeładowywanie operatorów to taka cecha języka, na którą rzucają się wszyscy newbie, a jest to im naprawdę do życia niepotrzebne.
Naucz się porządnie podstaw, napisz kilka programów o rozmiarze około 200 linii (np do zadań ze SPOJ albo MAIN), to po czymś takim okaże się, że przeładowywanie operatorów to żadna filozofia. W tej chwili marnujesz czas, który mógłbyś poświecić na naukę innych bardziej wartościowych rzeczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1