Как передать два значения из одной функции в другую в одном классе?

У меня есть эта функция:

void fraction::init()
{
cout<<"enter the values for the numerator and denominator\n";
cin>>num;
cin>>denom;
}

и я хочу, чтобы эти два числа использовались в другой функции, которая ими манипулирует.
как мне взять их для этой другой функции?
ПРИМЕЧАНИЕ: обе функции одного класса.

1

Решение

Просто определите их как членов класса:

class fraction {
private:
int num;
int denom;

public:
void init();          // has access to num and denom
void otherMethod();   // also has access to num and denom
};

Вы также не должны полагаться на init() быть призванным инициализировать переменные со значением по умолчанию, и вы также не должны полагаться на различные инициализации по умолчанию, предоставляемые C ++, см. Значение переменной по умолчанию.

Вместо этого добавьте конструктор, который устанавливает значения по умолчанию для переменных, чтобы убедиться, что переменные имеют приемлемые значения после создания объекта класса. Тогда вы все еще можете позвонить init() установить любые значения, которые вы хотите (и, вероятно, вы должны переименовать init() что-то вроде readValues() чтобы отразить, что метод на самом деле делает).

5

Другие решения

Это зависит от того, как вы будете использовать эти функции. Поскольку оба принадлежат к одному классу, вы можете сделать num а также denom (частные) члены класса. Но вы также можете использовать ссылки, если эти значения приходят извне класса. Это будет работать независимо от функций, принадлежащих одному классу или нет:

class fraction
{
public:
void init(int& num, int& denom) const;
void otherFunction(int num, int denom);
}

void fraction::init(int& num, int& denom) const
{
cout<<"enter the values for the numerator and denominator\n";
cin>>num;
cin>>denom;
}

// Define otherFunction() appropriately

Затем используйте эти функции в другом фрагменте кода:

// ...
int aNum, aDenom;
fraction fr;
fr.init(aNum, aDenom);
fr.otherFunction(aNum, aDenom);
// ...
-1

Либо сделайте их членами класса, как многие предлагают, либо вы можете попробовать пройти их, когда это необходимо. Если вы хотите, чтобы их значения отражали изменения, передайте их по ссылке.

datatype function1(int *a, int *b)

И затем, когда вы вызываете их из функции init (),

function1(&num, &denom)

Надеюсь это поможет

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector