【问题标题】:Get and Set function c++获取和设置函数 c++
【发布时间】:2020-05-26 21:36:07
【问题描述】:

我只是想知道是否有人可以帮助我了解我的代码,我有点困惑为什么它不能像我想要的那样工作,也许我误解了一些东西......该程序的重​​点是编写一个具有两个函数来设置和获取数字的类,但稍后在代码的主要部分我希望它打印出一个 2.52 的数字,而不仅仅是数字 2。如果有人帮忙,谢谢 :)。

#include <iostream>
#include<conio.h>
using namespace std;

class Class
{
public:
    void Set(float x)
    {
        number = x;
    }
    int Get()
    {
        return number;
    }
private:
    float number;
};
int main()
{
    Class object;
    object.Set(2.52);
    cout << "The number is: " << object.Get();

    return 0;
}

【问题讨论】:

  • 也许您想将int Get() 更改为float Get() ;)?
  • 获取返回一个整数。当object.Get()被执行时,你设置的number的值,2,53,被转换为int:2。这就是输出。

标签: c++ function class visual-c++ methods


【解决方案1】:

首先,您从Get() 返回一个int,因此number 将转换为int

您还应该设置Get() const,因为它不会在您调用函数时更改Class 对象中的任何内容。将其设为const 可以将Class 的实例传递给通过const&amp; 获取Class 的函数:

#include <iostream>

class Class
{
public:
    void Set(float x)
    {
        number = x;
    }
    float Get() const // returning float and added const
    {
        return number;
    }
private:
    float number;
};

void tester(const Class& obj) // a function taking a Class by const reference:
{
    std::cout << "The number is: " << obj.Get() << '\n';
}

int main()
{
    Class object;
    object.Set(2.52);
    tester(object);
}

如果不添加const,编译将失败。

【讨论】:

    【解决方案2】:

    你可以像这样改变get方法类型(float)

    class Class
    {
    public:
        void Set(float x)
        {
            number = x;
        }
        float Get()
        {
            return number;
        }
    private:
        float number;
    };
    int main()
    {
        Class object;
        object.Set(2.52);
        cout << "The number is: " << object.Get();
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2013-03-01
      • 2017-10-13
      相关资源
      最近更新 更多