高手门看看友元类的问题!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/25 17:13:09
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct record
{
string name;
string tel;
};
class recordlist
{
friend class adresslist;
private:
vector<record*> vec;
};
class adresslist
{
public:
void find();//查询
private:
recordlist rec;
};
void adresslist::find()
{ string s;
cout<<" "<<endl;
cin>>s;
vector<record*>::iterator iter=recordlist::vec.begin();//这句说object missing reference to'recordlist::vec'
}
int main()
{
adresslist tl;
system("pause");
return 0;

}

友元类允许你访问其private成员,但是没说允许你用类名去访问非静态成员...

你可以简单的修改如下进行测试:
vector<record*>::iterator iter=recordlist::vec.begin();
==>>
recordlist rl;
vector<record*>::iterator iter=rl.vec.begin();

recordlist::vec.begin()
这句的时侯因为你的这个vec对象还不存在,没法用begin函数
vector<record*> vec;这句改成static vector<record*> vec;试试看

#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct record
{
string name;
string tel;
};
class recordlist
{
friend class adresslist;
private:
vector<record*> vec;
};
class adresslist
{
public:
void find();//查询
private:
recordlist rec;
};
void adresslist::find()
{
string s;
cout<<" "<<endl;
cin>>s;
recordlist r; //实例化
vector<record*>::iterator iter=r.vec