$parsers
我不明白..当我调用该函数时,我发送了一个对象(FistMan)..为什么我的编译器仍然说我没有对象地调用它?
答案 0 :(得分:4)
DisplayAge
中的{p> Utility
不一个static
函数。因此,您需要Uitility
的实例才能调用它。
所以,要么创建函数static
,要么通过匿名临时
Utility().DisplayAge(FirstMan);
更好的是,让DisplayAge
成为Human
的成员函数。
答案 1 :(得分:1)
使用static
关键字,然后您就可以在课堂上调用您的功能
我在下面编辑了你的代码:
#include <iostream>
#include<string>
using namespace std;
class Human
{
private:
string Name;
int Age;
friend class Utility;
public:
Human(string InputName,int InputAge)
{
Name = InputName;
Age = InputAge;
}
};
class Utility
{
friend class Human;
public:
Utility() = default;
static void DisplayAge(const Human& Person)
{
cout<<Person.Age<<endl;
}
};
int main(void)
{
Human FirstMan("Adam",25);
cout<<"Accessing private member Age via friend class: ";
Utility::DisplayAge(FirstMan);
}
答案 2 :(得分:0)
无论何时想要定义函数,都不要使用类。使用命名空间:
namespace Utility
{
inline void DisplayAge(const Human& Person)
{
cout<<Person.Age<<endl;
}
}
int main()
{
Human FirstMan("Adam",25);
cout<<"Accessing private member Age via friend class: ";
Utility::DisplayAge(FirstMan);
}