有没有办法将现有函数用作类的一部分?如果有,怎么样?

时间:2013-08-23 02:06:43

标签: c++ function class

我有一个我想在不同的类中使用的函数。这可能吗?

示例:

int getNumber()
{
  // do something here that will use some values like:
  int number = num * pi;
  return number;
}

class Human
{
  int num;
  // other member
  int getNumber(); // same as above
}

class Robot
{
  int num;
  // other member
  int getNumber(); // same as above
}

getNumber()函数可以简短为return num;,或者长取决于函数内部的计算。

num内的getNumber()值是numHuman类的Robot成员。虽然,这些类没有父子关系。

3 个答案:

答案 0 :(得分:3)

这当然很容易。虽然C ++中的委托没有甜蜜的语法(遗憾的是,这带来了许多滥用继承......)。

1。自由功能方式

int transformNumber(int num) { return num * pi; }

class Human {
public:
    int getNumber() const { return transformNumber(num); }

private:
    int num;
};

2。构成方式

struct NumberThing {
    int num;

    int getNumber() { return num * pi; }
};

class Human {
public:
    int getNumber() { thing.getNumber(); }

private:
    NumberThing thing;
};

选择你最喜欢的。

答案 1 :(得分:0)

创建一个具有此功能的类,并扩展使用该功能的其他类。

答案 2 :(得分:-1)

这是一个使用继承的好例子。两个对象的共同点通常意味着它们实际上是更通用类的子类:

class Being
{
    int num;
    int getNumber() {/* .. */}
}

class Robot: public Being
{

}

class Human: public Being
{

}