所以我对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("%d\n", extractThing(&thing));
return 0;
}
主要目标是显示thing.x,thing.y,thing.dostuff1()和thing.dostuff2() 我理解,因为“dostuff”函数是私有的,所以只有该类中的东西才能访问该数据。如果你能帮助我理解/引导我为这4个任务编写解决方案的正确方向,那就太棒了。谢谢
答案 0 :(得分:0)
您希望dostuff1
和dostuff2
为public
,以便您可以调用它们。您还希望public
display
成员函数显示x
和y
,例如:
class Thing
{
private:
int x;
int y;
public:
void display()
{
printf("%d, %d\n", 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;
}
答案 1 :(得分:0)
你可以宣布extractThing
Thing
的朋友,这意味着它可以访问Thing
的私有。在这种情况下,这可能不是最好的设计选择。
由于extractThing
接受Thing
实例作为参数,显然需要访问它的私有状态,因此没有理由不改为成员函数。< / p>
另一种选择是提供可以使用的Thing
公共方法&#34;提取&#34;你需要什么,并使用extractThing
中的那些。
作为旁注,您应该通过将void
指针传递给extractThing
来避免丢弃类型安全。