该程序正在运行,但有一个例外,它似乎无法计算利润。这是我的代码,我相信我在某个地方犯了一个愚蠢的错误,但是我似乎找不到故障所在。
double getProfit() const;
void setRprice(double);
void setWprice(double);
void setProfit(double);
};
string Item::getName() const{ return name; }
void Item::setName(string n){name = n;}
double Item::getRprice() const{ return rprice; }
void Item::setRprice(double r){rprice = r;}
double Item::getWprice() const{ return wprice; }
void Item::setWprice(double w){wprice = w;}
double Item::getProfit() const{ return profit; }
void Item::setProfit(double p){profit = p;}
void setValues(Item&); void getValues(const Item&);
void setValues(Item& g){
string n;
double r,w,p;
p=r-w;
cout << "Enter brand name of item: ";
cin >> n;
cout << "Enter retail price: ";
cin >> r;
cout << "Enter wholesale price: ";
cin >> w;
g.setName (n);
g.setRprice(r);
g.setWprice(w);
g.setProfit(p);
}
它将输出品牌名称,零售和批发价格,因此我知道它存储了我想要的输出。我很好奇为什么它不使用我的储值并按照我的指示使用它们来计算利润。与我作为const的利润有关系吗?
答案 0 :(得分:1)
输入零售价和批发价后,您需要计算利润。线
p=r-w;
由于未为r
和w
都分配了值,因此导致未定义的行为。将该行移到该行之后
cin >> w;
这是udpated函数。
void setValues(Item& g){
string n;
double r,w,p;
cout << "Enter brand name of item: ";
cin >> n;
cout << "Enter retail price: ";
cin >> r;
cout << "Enter wholesale price: ";
cin >> w;
p=r-w;
g.setName (n);
g.setRprice(r);
g.setWprice(w);
g.setProfit(p);
}