c++ - 与具有来自 cin 的 setter 和指向对象的指针的默认构造函数相关的 OOP 问题不返回名称
问题描述
我有 3 个字段,一个返回最低价格的 void 方法,具有 3 个参数的构造函数和一个名称的 getter。a) 首先,我需要为此构造函数创建一个实例,并返回我所做的名称和最低价格。b)其次,我需要创建一个默认构造函数(所以没有参数)和一个 setter 方法来设置字段,但从键盘。c) 最后,我需要做与 a) 相同的事情,但要使用指针。
我的问题是:我不知道如何制作 b) 因为 setter 不起作用,当我尝试从 c) 返回指针对象的名称时,它没有显示任何内容
#include <iostream>
using namespace std;
class CTest{
private:
string name;
float price1;
float price2;
public:
CTest(string name,float price1,float price2){
this->name = name;
this->price1 = price1;
this->price2 = price2;
}
CTest(){};
void set_values(string name,float price1,float price2){
cin>>name;
cin>>price1;
cin>>price2;
}
string get_name(){
return name;
}
void minimum_price() {
if(this->price1 < this->price2)
cout<<"Min price is " <<this->price1;
else
cout<<"Min price is " <<this->price2;
}
};
int main(){
CTest P ("Phone",450.9f,500.9f);
cout<<P.get_name();
cout<<endl;
P.minimum_price();
CTest *A = new CTest("Something",4.5f,3.5f);
cout<<A->get_name();
cout<<endl;
A->minimum_price();
return 0;
}
解决方案
所以这是错误的
void set_values(string name,float price1,float price2){
cin>>name;
cin>>price1;
cin>>price2;
}
因为这三个参数隐藏了您的类成员变量的名称。所以来自cin
参数的值不是你的类。
你可能的意思是这个
void set_values(){
cin>>name;
cin>>price1;
cin>>price2;
}
现在来自的值cin
将进入您的班级。