编译器说我编的不对,请教

来源:百度知道 编辑:UC知道 时间:2024/06/03 00:26:04
编译器说:cannot access private member declared in class 'Drill'
就是说就是说重载操作符不能读取 私有成员 ,郁闷,请问谁知道哪里不对?
#include<iostream>
using namespace std;
const double pi=3.141592654;

class Drill
{
public:
Drill(){}
Drill(double,double,double);
double mrr() const;
double torque(double)const;

private:
double diameter,feed,speed;

friend istream& operator>>(istream&,Drill&);
friend ostream& operator<<(ostream&,const Drill&);

};

Drill::Drill(double drillDiam,double drillFeed,double drillSpeed)
{
diameter=drillDiam;
feed=drillFeed;
speed=drillSpeed;
}

double Drill ::mrr() const
{
return(pi*0.25*diameter*feed*speed*60.0);
}

double Drill::torque(double unitPower) const
{
double radSec;
radSec=speed*2*pi/60.0;
return(unitPower*mrr()/radSec);
}

istream& operator>

istream& operator>>(istream& is,Drill& dr)
ostream& operator<<(ostream& os,Drill& dr)
你在实现这两个操作符重载方法时,并没有声明它们是Drill类的友员
当然不能访问了,况且实现时还有错误,比如dr.speed写成了dr,speed等
自己看看类里的接口原型吧:
friend istream& operator>>(istream&,Drill&);
friend ostream& operator<<(ostream&,const Drill&);

istream& operator>>(istream& is,Drill& dr)
ostream& operator<<(ostream& os,Drill& dr)