cast?
-
hallo,
ich habe eine klasse defeniert
public ref class Parcel{ public: property double ^PAR; property double ^REHCOST; };
und in einer anderen klasse möchte ich PAR und REHCOST multiplizieren
void Calculation::claculation(){ REHVAL=safe_cast<double^>(parcel->PAR)*safe_cast<double^>(parcel->REHCOST); } }
ohne safe_cast hab ich es auch schon probiert.
die fehlermeldung bleibt die gleiche:.\Calculation.cpp(16) : error C2676: Binärer Operator '*': 'System::Double ^' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht
was muss ich schreiben das ich die beiden doubles multiplizieren kann?
-
Double^ ist ein Object (Referenz) und keine Zahl.
Verwende "Double" (ohne "^" Referenz-Tag).Und wenn man casten muss, dann ist i.d.R. meistens was faul...
-
Und wenn man casten muss, dann ist i.d.R. meistens was faul...
Hm, das Framework liefert sehr oft einfach System::Object zurück. Ich wüsste nicht, wie ich ohne cast an das passende Objekt gelange.
(Wenn der Satz aber darauf bezogen war, das zwei Objekte des gleichen Typs einen cast brauchen, unterstreiche ich die Aussage).
-
Knuddlbaer schrieb:
Und wenn man casten muss, dann ist i.d.R. meistens was faul...
Hm, das Framework liefert sehr oft einfach System::Object zurück. Ich wüsste nicht, wie ich ohne cast an das passende Objekt gelange.
foo->GetType()->InvokeMember(...)
-
Naja, wenn man mit seiner Rechenzeit nichts besseres vor hat, kann man das natürlich auch über Reflection lösen.
Ganz zu schweigen davon, das man auf alle Möglichkeiten zur Fehlerfindung bei der compilierung verzichtet.