class foo{
public:
double v1, v2, v3;
double x, y;
foo(const double &a){
set_var();
x = a;
if(a == v1)
y = 1;
else if(a == v2)
y = 0;
else if(a == v3)
y = 2;
}
void set_var(){
// v1, v2 and v3 will always be the same values as the corresponding double values
// that foo a,b and c are being set to in main()
v1 = 1.4;
v2 = 1.4;
v3 = 1.4;
}
};
,並在主功能:區分變量值的多個實例?
main(){
foo a = 1.2, b = 1.2, c = 1.2;
}
從本質上講,我想這個代碼做當我們試圖建立「富A,B,C」相同的雙值(因此「 v1,v2,v3'也是相同的值)是foo a = 1.4給出ay = 1, foo b = 1.4給出by = 0,並且foo c = 1.4給出cy = 2
短僞碼。基本上,'foo a'應該總是使用第一個if子句,'foo b'應該總是使用第二個,'foo c'應該總是使用第三個。
作爲這個任務的一部分,我必須以這種方式實現主函數。它不能改變。
我的第一個想法是,即使我試圖將foo a,b,c設置爲相同的雙倍,那麼double總會佔用內存中的不同位置,不是嗎?所以也許我可以以某種方式在構造函數中傳入雙重地址& x?然後設置該地址來表示v1,v2和v3,而不是首先使用這些變量?
我只是需要得到代碼來做我上面幾段描述的內容,即使在double值相等時也是如此。
您忘記了您在'main'上的返回類型 –
我不認爲您完全清楚您打算在此實現的目標。 'foo'不是'double'。 –
避免使用相等比較浮點數。在網上搜索「每個程序員應該知道什麼是浮點數」。 –