无法从函数返回值 我在C++中学习继承,试图从函数“年龄”返回值。我得到的只是0。我花了几个小时想弄明白,但运气不好。下面是我的代码。我将非常感谢在这方面的任何帮助

无法从函数返回值 我在C++中学习继承,试图从函数“年龄”返回值。我得到的只是0。我花了几个小时想弄明白,但运气不好。下面是我的代码。我将非常感谢在这方面的任何帮助,c++,C++,.h级 #include <stdio.h> #include <string> using namespace std; class Mother { public: Mother(); Mother(double h); void setH(double h); double getH(); //--message handler void print(); void sayName(); doub

.h级

#include <stdio.h>
#include <string>
using namespace std;

class Mother
{
public:
    Mother();
    Mother(double h);

    void setH(double h);
    double getH();

    //--message handler
    void print();
    void sayName();
    double age(double a);

private:
    double ag;
};
#包括
#包括
使用名称空间std;
班主任
{
公众:
母亲();
母亲(双h);
无效塞思(双h);
双getH();
//--消息处理程序
作废打印();
void sayName();
双年龄(双a);
私人:
双银;
};
.cpp

#包括
#包括
#包括“Mother.hpp”
#包括“女儿.hpp”
使用名称空间std;
母亲::母亲(){}
母亲:母亲(双h)
{
ag=h;
}
void setH(双h){}
双getH();
void Mother::print(){

cout函数age不会将值a赋给成员ag,而是返回它作为参数的值a,这是一件非常糟糕的事情。 要了解我想在主要内容中说的话,请写:

cout << mom.age(40) << endl; // 40
***你应该做的另一件事是:

将“getters”设为常量以防止更改成员数据,并且只允许“setters”不为常量。例如,在代码中:类母:

double getH()const; // instead of double getH() const prevents changing member data "ag" 
您的mom.print()执行以下操作:

cout<<"I am " <<ag <<endl;
return a;
你看,它不会将你妈妈的年龄保存到你的
mom
变量中,它只返回你传递的内容(这里是40),那么它怎么能打印呢


因此,有很多方法可以解决这个问题,如果你想返回你妈妈的年龄,不要你必须正确使用setter和getter。使用setter可以像这样更改年龄:

void setAge(const double &_age) {
    ag = _age;
}
如果要检索该值,请使用getter

double getAge() const {
    return ag;
 }

母亲:年龄应该设定为代码>这是AG< Ag/Cord>?现在,你只需要返回它。对不起,我不理解你的评论,你能详细说明吗?谢谢!听起来你需要再学习C++,如果你不理解我的评论。你应该在学习ABO之前了解对象、变量和值和方法。ut继承。离题:
在标题中使用名称空间std;
通常是一个坏主意。现在,每个包含标题的人都必须消除影响。什么影响?在这里阅读更多信息:离题:Mother.hpp缺少包含防护。这可能会造成无法形容的破坏。更多信息:这里:和这里:谢谢@Raindrop7。成功了!@familyGuy欢迎!让它成为如果有效的话,我会接受这个答案
return a;
void Mother::age(double a)
{
    ag = a;
}
void setAge(const double &_age) {
    ag = _age;
}
double getAge() const {
    return ag;
 }