Przeładowanie operatora

0

Hej! Mam problem z przeładowaniem operatora. W main mam takie coś:

#include "Money.h"
#include <iostream>
int Currency::USD = 1;
int Currency::PLN = 0; 

int main() {
  using namespace std;
  Money x(1034179*Currency::USD); // w jakis sposob konstruktor z USD musi odroznic PLN
  cout << Currency::type(x) << endl;
  
  const Money y(5633*Currency::PLN); 
  cout << Currency::type(y) << endl;
 

Zadeklarowałam powyższe funkcje tak:

class Currency{
	public:
	static int USD;
	static int PLN;
	static char * type(const Money & obj);
};

void operator*(const Money & obj, int typ_waluty) {
	obj.typ_waluty = typ_waluty;
	

definicja funkcji type::

char * Currency::type(const Money & obj) {
	//cout<<obj.typ_waluty<<endl;
	if(obj.typ_waluty == 1) {
		return "USD";
	} else return "PLN";
}

Niestety w wyniku program nie działa poprawnie, a operator* nie wykonuje się.

0

Bardzo namieszałeś, a da się bez żadnego przeładowania operatorów:

#include <map>
#include <string>

class Currency
{
public:
	enum ISO { PLN, USD, EUR };
	static std::map<ISO, std::string> name;
	static const std::string& type(ISO code) { return name[code]; }
};

std::map<Currency::ISO, std::string> Currency::name = {{PLN, "PLN"}, {USD, "USD"}, {EUR, "EUR"}};

class Money
{
public:
	double amount;
	Currency::ISO code;
	Money(const double &amount, Currency::ISO code) : amount(amount), code(code) {}
	const std::string& type() const { return Currency::type(code); }
};
0

Zawsze opisz co ma robić twój kod, potem jak próbujesz to zrealizować, a następnie co ci nie działa.

Zamieszam ci w głowie i dam ten link: http://en.cppreference.com/w/cpp/language/user_literal

0
MarekR22 napisał(a):

Zamieszam ci w głowie i dam ten link: http://en.cppreference.com/w/cpp/language/user_literal

O jezu :O Robią z tego języka jeden wielki śmietnik - już chyba są tu konstrukcje ze wszystkich innych języków pomieszane ze sobą w brzydki sposób
Zamiast ogarniać ten burdel to wprowadzają kolejne zaciemniające kod konstrukcje :|

0
Świetny Mleczarz napisał(a):
MarekR22 napisał(a):

Zamieszam ci w głowie i dam ten link: http://en.cppreference.com/w/cpp/language/user_literal

O jezu :O Robią z tego języka jeden wielki śmietnik - już chyba są tu konstrukcje ze wszystkich innych języków pomieszane ze sobą w brzydki sposób
Zamiast ogarniać ten burdel to wprowadzają kolejne zaciemniające kod konstrukcje :|

raczej nie usuwają starych, bo wielkie korporacje mają kod kompilowany na starych "fjuczersach" języka, jakby usunęli je to wprowadzanie poprawek do softu stałoby się koszmarem

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