我知道私有(private)类数据只能在类内访问;然而,我读过的例子在他们的程序代码中显示了私有(private)成员的类似用法。我正在尝试使用函数来访问和操作私有(private)类成员,但它不起作用。我做错了什么?我已经尝试在第一个 cin 之后用 Data.SelectionF() 函数替换 Data.selection 以及使用 selection 的所有实例成员变量没有成功。我还对 value 成员变量的所有实例尝试了相同的方法。谢谢
#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.
最佳答案
无论您读过什么示例,要么它们是错误的,要么您误解了它们。您不能访问类外的私有(private)类成员(当然,friend
声明除外)。根据定义,这就是私有(private)类成员的含义。
cin >> Data.selection;
selection
是私有(private)类成员。无法从您的 main()
访问它。关于它,几乎就是所有可以说的了。
关于c++在程序中使用私有(private)类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38164204/