Nie czyta int jako double

0

Witam, mam problem z przeładowaniem operatora,

klasa Klasa zawiera prywatne pole o nazwie a, metoda a() zwraca wartosc a.

Klasa Klasa::operator* (const double& x)
{
	Klasa *p = new Klasa (this->a() * x);
	return *p;
}

Załóżmy że tworzę obiekt klasy Klasa np: Klasa k(2) //konstruktor, pole o nazwie a = 2
i teraz pisząc polecenie np: 4k wywala błąd, natomiast pisząc 4.0k działa bez problemu.
Jak można to naprawić? Zaznaczam, że muszę podawać polecenie w postaci jak wyżej, tak samo operator* musi przyjmować argument typu double.
Z góry dziękuję za pomoc.

0

Masz wycieki pamięci.
dla k4 oraz k4.0:

Klasa Klasa::operator*(double x)const { return Klasa(a*x); }

dla 4k oraz 4.0k:

Klasa operator*(double x,const Klasa &k) { return k.operator*(x); }

Może zamiast przeciążenia operatora * w ten sposób prościej zrobić konstruktor z parametrem double oraz operator konwersji na double.

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