すべて - 私はこれをかなり研究しました。私のプログラムはエラーなくコンパイルされますが、構造体内の関数の値はプログラムに渡されません。彼らがなぜそうでないのか理解してもらえますか?問題のコンポーネントを示すコードスニペットを含めました。主に、 "& allData :: ConvertToC"のようなコードは、構造体 "allData"内の関数から値を返していません。 "allData.temperature"の入力に関係なく、値は1だけ戻されます。私はプログラムのすべてのコンポーネントを知っている、言及されているもの以外は動作しています。構造体内の関数と参照によって呼び出す値
コードスニペット:
//defining the struct
struct allData {
char selection;
double centigrade;
double fahrenheit;
double temperature;
double ConvertToC (const double& temperature);
double ConvertToF (const double& temperature);
} allData;
//adding data to the struct for the functions within the struct to use
cout << "Enter C for converting your temperature to Celsius, or enter F for converting your temperature to Fahrenheit, and press ENTER." << endl << endl;
cin >> allData.selection;
cout << "Enter your starting temperature to two decimal places, and press ENTER." << endl << endl;
cin >> allData.temperature;
switch (allData.selection) {
//my attempt to reference the functions within the struct and the data in the struct, but it is not working and always returns a value of 1.
case 'c': { &allData::ConvertToC;
cout << "Your temperature converted to Celsius is: " << &allData::ConvertToC
<< endl << endl;
break;
}
case 'C': { &allData::ConvertToC;
cout << "Your temperature converted to Celsius is: " << &allData::ConvertToC
<< endl << endl;
}
}
//Function definitions that are located in the struct. Do I define the functions in the normal way, like this, if they are located in the struct?
double allData::ConvertToF (const double& temperature) {
double fahrenheit = 0;
fahrenheit = temperature * 9/5 + 32;
return fahrenheit;
}
double allData::ConvertToC (const double& temperature) {
double centigrade = 0;
centigrade = (temperature - 32) * 5 /9;
return centigrade;
}
'&allData :: ConvertToC'はメソッドのアドレスであり、あなたはそれを呼び出さないので、' allData.ConvertToC(allData.temperature) 'を行う必要があります。 – Holt
これも正しい答えです、私は信じています!ありがとうございました! – cppstudent1