c++中使用私有类数据的程序
c++ using private class data in a program
我知道私有类数据只能在类内访问;然而,我所阅读的示例显示了在程序代码中对私有成员的类似使用。我试图使用函数来访问和操纵私有类成员,但它不起作用。我做错了什么?我已经尝试将Data. selectionf ()函数替换为Data。对于所有使用select 成员变量而不成功的实例,在第一个cin之后选择。我还对值成员变量的所有实例尝试了相同的方法。由于
#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) << ".nn";
cout << "Enter your starting value to two decimal places, and press
ENTER.nn";
cin >> Data.value;
cout << "nYou entered a starting value of: " <<
Data.valueF(Data.value) << ".nn";
//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) << "nn";
break;
}
case 'C': { Data.ConvertC(Data.value);
cout << "Your Feet converted to Centimeters is: " <<
Data.ConvertC(Data.value) << "nn";
break;
}
case 'r': { Data.ConvertR(Data.value);
cout << "Your Inches converted to Centimeters is: " <<
Data.ConvertR(Data.value) << "nn";
break;
}
case 'R': { Data.ConvertR(Data.value);
cout << "Your Inches converted to Centimeters is: " <<
Data.ConvertR(Data.value) << "nn";
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.
无论你读过什么例子,要么他们是错的,要么你误解了他们。您不能在类之外访问私有类成员(当然,friend
声明除外)。根据定义,这就是私有类成员的含义。
cin >> Data.selection;
selection
是一个private类成员。它不能从你的main()
访问。这差不多就是我能说的了。
如果我没有误解你的问题,让我告诉你一些你的问题。首先,使用这行"cin >> Data.value;
",您试图获得"DATA
"类的私有值,事实上这是错误的。您不能从"DATA
"类的外部访问私有变量。对象"DATA
"不在"DATA
"类中。另一方面,如果您想间接访问类中的私有变量,那么您可以编写这样的函数:
public:
void function_name(const DATA &dataObject) const
{
cout << "The selection value : " << dataObject.selection << endl;
}
这部分代码将间接访问类中的私有变量。请记住,如果函数在类中,那么它可以访问所有的私有变量,这段代码没有任何问题。
相关文章:
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 我的程序没有从文件中读取并输入数据
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 员工测试驱动程序数据结构
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 将数据从C++程序发布到弹性搜索
- 数据库连接并将数据从C ++程序保存到MySQL
- boost::asio 不会触发读取处理程序,而 Wireshark 会看到传入的数据
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 更改应用程序数据的路径
- 在 C++17 中,是否未定义使用无锁原子学保护从信号处理程序传递的数据?
- 如何安装性能数据帮助程序
- 使用 pipe() 和 fdopen() 将数据从 Python 脚本传递到 Windows 中的C++应用程序
- 需要解决在Storm数据程序中读取Makefile的问题