我有这个功能:
void fraction::init()
{
cout<<"enter the values for the numerator and denominator\n";
cin>>num;
cin>>denom;
}
我希望这两个数字在另一个操作它们的函数中使用。 我该如何将它们带到其他功能? 注意:两个函数属于同一类。
答案 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)
这取决于您将如何使用这些功能。由于两者都属于同一个类,因此您可以成为该类的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);
// ...
答案 2 :(得分:-1)
要么像许多人所说的那样让他们成为班级成员,要么你可以在需要时尝试传递他们。如果您希望其值反映更改,请通过引用传递它们。
datatype function1(int *a, int *b)
然后当你从init()函数调用它们时,
function1(&num, &denom)
希望这有帮助