У меня проблемы с объектно-ориентированным скриптом C ++. Когда я создаю объект, я хочу вычислить AttributeQ
на основе его атрибутов MyAValue
, MyBValue
и MyCValue
.
При использовании отладчика Visual 2010 я заметил, что TempAttribueQ
, кажется, всегда равен 0
(за исключением случаев, когда он, конечно, инициализируется). Если предположить Delta != 0
, BVal == Maximum
и DeltaA == DeltaC
, то TempAttribueQ
должно быть 1/3
, а не 0
.
Сначала я подумал, что это проблема области видимости, но переменная определена вне операторов if-else
. Я попытался инициализировать TempAttribueQ
как какое-то возмутительное число, которое оно сохраняет до операторов if-else
, когда оно становится 0
, когда этого не должно быть.
Это мой код ...
void SetMyAttribueQ(){
double TempAVal = MyAValue;
double TempBVal = MyBValue;
double TempCVal = MyCValue;
double Minimum = min(min(TempAVal, TempBVal), TempCVal);
double Maximum = max(max(TempAVal, TempBVal), TempCVal);
double Delta = Maximum - Minimum;
double DeltaA = 0;
double DeltaB = 0;
double DeltaC = 0;
double TempAttribueQ = 0;
if(Delta == 0) {
MyAttribueQ = TempAttribueQ; // this->SetMyAttribueQ(TempAttribueQ);
}
else {
DeltaA = /* (a removed equation goes here... */
DeltaB = /* (a removed equation goes here... */
DeltaC = /* (a removed equation goes here... */
if(AVal == Maximum)
TempAttribueQ = (DeltaC - DeltaB);
else if(BVal == Maximum)
TempAttribueQ = (1/3) + (DeltaA - DeltaC);
else
TempAttribueQ = (2/3) + (DeltaB - DeltaA);
MyAttribueQ = TempAttribueQ;
}
}
Что мешает TempAttribueQ
получить значение 1/3
или 2/3
? Или, что заставляет его быть установлен на 0
?