C++中的通用/特定帮助
General/Specific Assitance in C++
所以我对C++很陌生,但对C有点涉猎。但我不知道如何在私有/公共类中调用函数和变量。我试过研究指针,但我似乎不明白如何使用指针调用这些变量。我得到的代码如下所示:
#include <cstdio>
class Thing
{
private:
int x;
int y;
virtual int doStuff()
{
return x+y;
}
virtual int doStuff2()
{
return x*y;
}
public:
Thing(){
x = 2;
y = 10;
}
};
int extractThing(void* thing)
{
//insert code here
//return the value to be printed
}
int main()
{
Thing thing;
printf("%dn", extractThing(&thing));
return 0;
}
主要目标是显示thing.x、thing.y、thing.dostuff1()和thing.dotuff2()我理解,因为"dostuff"函数是私有的,所以只有该类中的东西才能访问该数据。如果你能帮助我理解/引导我朝着正确的方向为这4项任务编写解决方案,那就太好了。感谢
您希望dostuff1
和dostuff2
为public
,以便可以调用它们。您还需要一个public
display
成员函数来显示x
和y
,类似于:
class Thing
{
private:
int x;
int y;
public:
void display()
{
printf("%d, %dn", x, y);
}
int doStuff()
{
return x+y;
}
int doStuff2()
{
return x*y;
}
Thing(){
x = 2;
y = 10;
}
};
此外,没有理由拥有virtual
函数。
然后你可以:
int main()
{
Thing thing;
thing.dostuff();
thing.dostuff2();
thing.display();
return 0;
}
您可以将extractThing
声明为Thing
的朋友,这意味着它可以访问Thing
的私有空间。不过,在这种情况下,这可能不是最好的设计选择。
由于extractThing
无论如何都接受Thing
实例作为参数,并且显然需要访问它的私有状态,因此没有什么理由不创建成员函数。
另一种选择是为Thing
提供可以使用的公共方法,从中"提取"您需要的内容,并在extractThing
中使用这些方法。
附带说明一下,您可能应该通过将void
指针传递给extractThing
来避免丢弃类型安全性。
相关文章:
- 需要帮助设置在C++中使用的Potrace
- 在指针的帮助下,文本文件中单词的频率
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 需要帮助将结构数组传递给函数
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 有人可以帮助我处理正则表达式吗?
- C++调用具有 *this 属性的单个帮助程序函数
- C++:需要帮助了解运算符重载错误
- 需要以下代码的帮助,下面的代码有什么问题
- CS1 项目帮助C++
- 用于检查值是否为其任何参数的帮助程序函数
- 需要有关此 if 语句的帮助
- 类型限定宏帮助程序
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- NS3 插槽混淆(需要帮助理解)
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 需要帮助查找内存泄漏
- 有人可以帮助我理解这些参数/参数吗?