ich will ja nicht unken, aber solange Du nicht 100% sicher sein kannst, dass diffX ungleich Null ist solltest Du folgenden Programmcode schreiben :
Code: Alles auswählen
if (diffX != 0)
{
xFactor = ( (double)width() ) / diffX;
}
else
{
// hier ist was ganz schreckliches passiert
}
Zumindest solltest Du eine ASSERT vorschalten
Code: Alles auswählen
ASSERT(diffX != 0)
xFactor = ( (double)width() ) / diffX;
Die erstere Variante ist bereits deshalb vorzuziehen, weil Dir ansonsten bei späteren Änderungen des Programmes (wenn Du Deine Anfangswerte schon vergessen hast) böse Seiteneffekte auftreten können.
Grundsätzlich kann es auch nicht schaden, jedem Wert einen Anfangswert zuzuweisen. also z.B:
Code: Alles auswählen
double minX = 0, maxX = 500, xFactor = 0, diffX = 0;
diffX = maxX - minX;
...
Ich habe in Deinem Programmcode z.B. nicht entdeckt, wo Du minX initialisiert hast. Also kann maxX - minX auch 0 sein. An einen Compilerfehler mag ich da nicht glauben. Aber das Verhalten beim initialisieren der Variablen ist z.B. auch bei msvc unterschiedlich (Debug - modus oder Release - modus).
Probier es doch einfach mal aus, wenn es dann klappt, weisst Du zumindest woran es lag. Falls das immer noch nicht klappt (was ich mir nicht vorstellen kann), probier doch mal folgendes aus
Code: Alles auswählen
double testWidth = width()
xFactor = testWidth / diffX;
Gruss Arne