我有2个类,CLASS locationdata是CLASS PointTwoD的私有成员。
CLASS locationdata
class locationdata
{
public:
locationdata(); //default constructor
locationdata(string,int,int,float,float); //constructor
//setter
void set_sunType(string);
void set_noOfEarthLikePlanets(int);
void set_noOfEarthLikeMoons(int);
void set_aveParticulateDensity(float);
void set_avePlasmaDensity(float);
//getter
string get_sunType();
int get_noOfEarthLikePlanets();
int get_noOfEarthLikeMoons();
float get_aveParticulateDensity();
float get_avePlasmaDensity();
static float computeCivIndex(string,int,int,float,float);
friend class PointTwoD;
private:
string sunType;
int noOfEarthLikePlanets;
int noOfEarthLikeMoons;
float aveParticulateDensity;
float avePlasmaDensity;
};
CLASS PointTwoD
class PointTwoD
{
public:
PointTwoD();
PointTwoD(int, int ,locationdata);
void set_x(int);
int get_x();
void set_y(int);
int get_y();
void set_civIndex(float);
float get_civIndex();
locationdata get_locationdata();
bool operator<(const PointTwoD& other) const
{
return civIndex < other.civIndex;
}
friend class MissionPlan;
private:
int x;
int y;
float civIndex;
locationdata l;
};
在我的主要方法中,我试图访问locationdata的私有成员但是我收到一个错误:&#39; - &gt;&#39;的基本操作数有非指针类型&#39; locationdata&#39;
这就是我访问私人会员的方式
int main()
{
list<PointTwoD>::iterator p1 = test.begin();
p1 = test.begin();
locationdata l = p1 ->get_locationdata();
string sunType = l->get_sunType(); // this line generates an error
}
答案 0 :(得分:2)
这不是访问权限问题,get_sunType()
已经public
。
l
不是指针,您可以通过.
运算符
更新
string sunType = l->get_sunType(); // this line generates an error
// ^^
为:
string sunType = l.get_sunType();
// ^
答案 1 :(得分:2)
这与私人/公众无关。您正在使用指针访问运算符->
来访问类的成员;您应该使用.
代替:
string sunType = l.get_sunType();
答案 2 :(得分:1)
运营商->
在locationdata中没有实施。
您需要使用.
运算符:
string sunType = l.get_sunType();
勒兹。
答案 3 :(得分:-1)
根据您的代码,p1不是参考。
尝试
p1.get_locationdata()
而不是
p1->get_locationdata()