首页 > 解决方案 > 如何访问不同类中的属性

问题描述

我正在做一个只需要打印变量值的程序,我认为第一类正在工作,'m_valor' 像我想要的那样打印,但第二类应该打印'm_valor + m_valorAdicional',但它是只打印 'm_valorAdicional' 的值:

#ifndef INGRESSO_H
#define INGRESSO_H

#include <iostream>

using namespace std;

class Ingresso
{
protected:
    float m_valor;
public:
    Ingresso(): m_valor(0){};
    Ingresso(float valor): m_valor(valor){};
    ~Ingresso(){};
    float getValor() const {return m_valor; };
    
};

class IngressoVip : public Ingresso
{
private:
    float m_valorAdicional;

public:
    IngressoVip(): m_valorAdicional(0){};
    IngressoVip(float valor): m_valorAdicional(valor){};
    ~IngressoVip(){};
    float getValor(){return m_valorAdicional +=m_valor;};
};

#endif

主.cpp:

#include "Ingresso.hpp"

int main()
{
    Ingresso a(10);
    IngressoVip b(5);
    out<<"valor Ingresso: "<<a.getValor()<<endl;
    cout<<"valor IngressoVip: "<<b.getValor()<<endl;

    return 0;
}

我认为这应该很容易,但我只是不知道我必须做什么才能像我想要的那样工作。

标签: c++oop

解决方案


你应该使用+,而不是+=+=此行中的内容是什么:

return m_valorAdicional +=m_valor;

是否将 的值相加m_valor改变的值m_valorAdicional,然后返回这个新值。如果您不想更改变量的值,请使用.m_valorAdicional+


推荐阅读