我创建了一个名为“ShortestTime”的类。我有一些不是成员函数的函数,但我希望它们能够访问我的成员变量 即。我有一个函数来排序作为公共成员变量的List,但是它无权访问这个成员变量。
我已经阅读了一些关于“朋友”的内容,但无法让它发挥作用。我如何解决我的问题?
感谢您的帮助,
罗宾
答案 0 :(得分:2)
有些方法可以使用朋友来解决您的问题,但我们需要查看示例代码。
但我个人的做法是向ShortestTime添加一个功能,对您的私人成员进行排序。
ShortestTime::SortInterals()
{
//sort private stuff
}
有没有理由不起作用?
答案 1 :(得分:0)
这完全取决于我们在这里谈论的语言。既然你在谈论“朋友”功能,我会假设你在谈论c ++。 所以基本上,友元函数只是一个普通函数,可以访问c ++中私有和受保护的类成员。例如..
int abc(myclass a)
{
...
}
class myclass
{
int someprivatemembers;
public:
function myClass() { ... }
friend int abc(myclass);
}
现在,在上面的例子中,函数abc将有权访问对象的某些私有成员传递给它,因为它被声明为该类的“朋友”。
答案 2 :(得分:0)
我创建了一个名为“ShortestTime”的类。我有一些不是成员函数的函数,......
不,你不:-)。根据定义,类中的所有函数都是成员函数。你可能有一些 out 类的函数 - 它们不是成员函数。
但我希望他们能够访问我的成员变量。 即。我有一个函数来排序作为公共成员变量的List,但是它无权访问这个成员变量。
是的。你说你有一个公共成员变量List:
class X
{
public:
List identifier_;
};
所有功能都可以访问列表,无论它们是否是成员函数。
我已经阅读了一些关于“朋友”的内容,但无法让它发挥作用。我如何解决我的问题?
你可能发现自己需要朋友的唯一情况,也就是上述陈述可能适用的情况,类似于......
class X
{
public:
private:
List identifier_;
};
void some_non_member_function()
{
X x;
x.identifier_; // HOW TO GET ACCESS...?
}
要授予some_non_member_function()访问私有数据成员的权限,您可以......
将其设为课程的friend
class X
{
friend void some_non_member_function();
};
void some_non_member_function()
{
X x;
x.identifier_; // NOW OK
}
使其成为会员功能
class X
{
public:
void some_non_member_function()
{
X x;
x.identifier_; // NOW OK
}
};