首页 > 解决方案 > 与具有来自 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;
}

标签: c++oop

解决方案


所以这是错误的

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将进入您的班级。


推荐阅读