所以我正在尝试构建一个类,它可以保存有关原子元素的信息,然后用它们进行计算。我的重载* friend函数出错了,它说变量atom_weight在函数的上下文中是私有的,但是它是朋友所以它不应该是
// The chemical class
class Chemical{
public:
Chemical();
Chemical(string chemsym);
Chemical(string chemsym, int number, double weight);
void get_element(string chemsym, ifstream& fin);
void clear();
friend Chemical operator +(Chemical& molecule, Chemical& element);
friend Chemical operator *(const Chemical element, int multiplier);
friend Chemical operator >>(istream& ins, Chemical element);
friend Chemical operator <<(ostream& outs, Chemical element);
string get_sym();
int get_num();
double get_weight();
private:
string chemsym;
int atom_num;
double atom_weight;
};
然后这是我的重载*运算符的函数定义。
Chemical operator *(const Chemical& element, int multiplier){
Chemical tempele;
string number;
tempele.atom_weight = element.atom_weight * multiplier;
number = itostr(mulitplier);
tempele.chemsym = element.chemsym + number;
return tempele;
}
我的大多数操作员都遇到了类似的错误,但即使我找不到任何差异,我的补充也是如此。如果有人对如何解决这个问题有任何见解,那就太棒了。
答案 0 :(得分:0)
同时的函数声明是函数定义与类中的函数声明不对应。声明像
这样的函数friend Chemical operator *(const Chemical &element, int multiplier);
^^