Получить и установить функцию c ++ - PullRequest
0 голосов
/ 27 мая 2020

Я просто хотел узнать, может ли кто-нибудь помочь мне с моим кодом, я немного сбит с толку, почему он не работает, как я хочу, может быть, я что-то не понимаю ... Смысл программы в том, чтобы написать класс с двумя функциями для установки и получения числа, но позже в основной части кода я хотел, чтобы он распечатал число 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;
}

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Прежде всего, вы возвращаете int из Get(), поэтому number будет преобразовано в int.

Вы также должны сделать Get() const, поскольку он не будет измените что-либо в объекте Class при вызове функции. Создание const позволяет передавать экземпляры Class функциям, принимающим Class по const&:

#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 компиляция завершится ошибкой.

0 голосов
/ 27 мая 2020

вы можете изменить тип метода получения (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...