Przeładowanie operatora = dla typów wbudowanych

0

Witam,
chciałem się zapytać czy jest w C++ jakaś możliwość, by do liczby typu double przypisać jakiś obiekt własnej klasy?
Tzn. jak przeładować operator = by móc wykonać następujące działanie:

klasa obiekt;
double var = obiekt;

czy jest to w ogóle możliwe?

0

To jest nierealne xD

0

Nie możemy przeładowywać operatorów dla typów wbudowanych.

Możesz za to przeciążyć operator konwersji na double. Wtedy kompilator dokona niejawnej konwersji i powinno zadziałać (jeśli nie, to trzeba konwertować jawnie).

2
#include <iostream>
using namespace std;

class Foo
{
public:
	Foo(double bar) : m_value(bar) { }
	operator double() const { return m_value; }
private:
	double m_value;
};

int main() {
	Foo foo(12.5);
	double buzz = foo;
	std::cout << buzz << std::endl;
	return 0;
}
0

Wydawało mi się, że jeśli mogę zrobić coś takiego:

class Klasa
{
public:
double operator*(double a)  //dla obiekt*zmienna_double
{
return x*a;
}
double x;
//...
}

double operator*(double a, Klasa& b)   //dla zmienna_double*obiekt
	{
	return b.x*a;
	}

to równie dobrze mogę zrobić:

double operator=(double a, Klasa& b)

dodanie znacznika <code class="cpp"> - fp

0

Nie można przeładować operatorów typów wbudowanych.

0
class klasa
{
public:
	operator double() const
	{
		return 1.23;
	}
};

int main()
{
	klasa obiekt;
	double var = obiekt;
}

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