プライベートクラスのデータはクラス内でしかアクセスできないことがわかっています。しかし、私が読んだ例では、プログラムコードで私的メンバーの同様の使用が示されています。私はプライベートクラスのメンバーにアクセスして操作するために関数を使用しようとしていますが、それは機能しません。私は間違って何をしていますか?私はData.SelectionF()の代わりにData.selectを最初のcinの後に、そしての選択のメンバー変数のすべてのインスタンスの代わりに使用してみました。私はまた、値メンバ変数のすべてのインスタンスに対して同じアプローチを試みました。ありがとうC++プライベートクラスのデータをプログラム内で使用する
#include <iostream>
#include <iomanip>
using namespace std;
class allData {
private:
char selection;
double r;
double centimeter;
double value;
public:
double ConvertC (double value);
double ConvertR (double value);
double valueF (double value);
char selectionF (char selection);
allData Data();
} Data;
int main() {
cout << "Enter C for converting your Feet to Centimeters.\n"
"Enter R for converting your Inches to Centimeters.\n";
cin >> Data.selection;
cout << "\nYou selected to convert to: " <<
Data.selectionF(Data.selection) << ".\n\n";
cout << "Enter your starting value to two decimal places, and press
ENTER.\n\n";
cin >> Data.value;
cout << "\nYou entered a starting value of: " <<
Data.valueF(Data.value) << ".\n\n";
//switch to decide which conversion function to use from the structure
switch (Data.selectionF(Data.selection)) {
case 'c': { Data.ConvertC(Data.value);
cout << "Your Feet converted to Centimeters is: " <<
Data.ConvertC(Data.value) << "\n\n";
break;
}
case 'C': { Data.ConvertC(Data.value);
cout << "Your Feet converted to Centimeters is: " <<
Data.ConvertC(Data.value) << "\n\n";
break;
}
case 'r': { Data.ConvertR(Data.value);
cout << "Your Inches converted to Centimeters is: " <<
Data.ConvertR(Data.value) << "\n\n";
break;
}
case 'R': { Data.ConvertR(Data.value);
cout << "Your Inches converted to Centimeters is: " <<
Data.ConvertR(Data.value) << "\n\n";
break;
}
default: {cout << "You entered an invalid selection for your conversion"
"choice.\n";
break;
}
}
return 0;
}
//Function definitions
double allData::ConvertC (double value) {
centimeter = value * 30.48;
return centimeter;
}
double allData::ConvertR (double value) {
r = value * 2.54;
return r;
}
double allData::valueF (double value) {
return value;
}
char allData::selectionF (char selection) {
return selection;
}
//End of program.
例を誤解していると思います。 "ゲッターとセッターをC++で"読み込み、もう一度やり直してください。必要なパターンは 'cin >> localVarです。 classInstance.setProperty(localVar); ' –
[namespace stdを使うのは悪い考えです](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-in-c-considered-bad-practice ) –