Hallo,
Sie hatten in einen anderen Thread von einer var Klasse gesprochen um eine Automatische Konvertierung von var zu int usw. vorzunehmen.
Ich bräuchte dies dringend für mein eigenes Projekt, daher werde ich das einfach mal selber probieren. Leider kenne ich mich in Operator Overloading (und C++ im Generellen) nicht perfekt aus. Meinten Sie die Klasse (im absoluten Grobaufbau) so:
Code:
class var {
private:
long value;
public:
var::var(int a) { value=_VAR(a); }
var::var(float a) { value=_VAR(a); }
var::var(double a) { value=_VAR(a); }
var::var(long a) { value=a; }
var::var() { value=0; }
var operator+(long);
var operator+(int);
var operator+(double);
var operator+=(long);
var operator+=(int);
var operator+=(double);
var operator-(long);
var operator-(int);
var operator-(double);
var operator-=(long);
var operator-=(int);
var operator-=(double);
var operator>>(int);
var operator=(int);
var operator=(long);
var operator=(double);
long operator=(var);
operator long();
operator int();
operator double();
inline long getvalue() { return(value); }
};
var var::operator+(long summand)
{
this->value = this->value+((long)summand);
return *this;
}
var var::operator+(int summand)
{
this->value += _VAR(summand);
return *this;
}
//...
Code wie:
var a = 2;
a += 1;
a += 0.12;
a >>= 2;
Funktioniert so tadellos, auch unter C++. Zusätzlich könnte man über einen Konstruktur die Variable bei keiner Initalisierung auf 0 setzten (und so gewissermaßen #pragma_zero von C-Lite simulieren). Ich bin mir aber nicht ganz sicher, ob das oben die intelligenteste Lösung ist. Meinten Sie ihre Aussage zu einer var Klasse überhaupt so?
Gibt ne Menge warnungen ("'ang' hat C-Bindung angegeben, aber gibt UDT 'var' zurück, was mit C inkompatibel ist"), aber hierfür müsste man einfach nur überall var mit long ersetzten. Die Frage ist eigentlich nur, wie schnell so eine Klasse wie die da oben ist. Ich kenn mich hier in C++ nicht aus, aber wirken sich die vielen definierten Operator zuweisungen auf die Geschwindigkeit des Codes aus?
Sorry für die vielen Fragen hier (und nicht im Higher Languages), aber ich glaube nicht, dass diese hier jemand beantworten kann (bzw. die es können lesen den Post nicht

).
mfg
Timo
PS: Wenn ich das oben richtig gemacht habe, dann kann ich ihnen am Ende die Klasse gerne zu Verfügung stellen.