【发布时间】:2016-07-02 20:27:13
【问题描述】:
我知道私有类数据只能在类内访问;然而,我读过的例子显示了在他们的程序代码中类似地使用私有成员。我正在尝试使用函数来访问和操作私有类成员,但它不起作用。我做错了什么?我已经尝试用 Data.SelectionF() 函数替换第一个 cin 之后的 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.
【问题讨论】:
-
我想你一定是误解了这些例子。阅读“C++ 中的 getter 和 setter”,然后再试一次。你需要的模式是
cin >> localVar; classInstance.setProperty(localVar);
标签: c++ class pass-by-reference private-members