如何在同一个类中将两个值从一个函数传递给另一个函数?

时间:2014-01-10 08:47:00

标签: c++

我有这个功能:

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

我希望这两个数字在另一个操作它们的函数中使用。 我该如何将它们带到其他功能? 注意:两个函数属于同一类。

3 个答案:

答案 0 :(得分:5)

只需将它们定义为班级成员:

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 ++提供的各种默认初始化,请参阅{{ 3}}

相反,添加一个构造函数,该构造函数设置变量的默认值,以确保在创建类的对象后变量具有合理的值。然后,您仍然可以调用init()来设置您想要的任何值(可能您应该将init()重命名为readValues(),以反映该方法的真正含义。

答案 1 :(得分:-1)

这取决于您将如何使用这些功能。由于两者都属于同一个类,因此您可以成为该类的numdenom(私有)成员。但是如果这些值来自类外,您也可以使用引用。无论属于同一类的函数如何,这都将起作用:

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);
// ...

答案 2 :(得分:-1)

要么像许多人所说的那样让他们成为班级成员,要么你可以在需要时尝试传递他们。如果您希望其值反映更改,请通过引用传递它们。

datatype function1(int *a, int *b)

然后当你从init()函数调用它们时,

function1(&num, &denom)

希望这有帮助