2

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

例子:

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()和类的num成员。虽然,这些类没有父子关系或朋友关系。HumanRobot

4

3 回答 3

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;
};

选择你最喜欢的。

于 2013-08-23T07:03:56.277 回答
0

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

于 2013-08-23T02:09:04.597 回答
-1

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

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

class Robot: public Being
{

}

class Human: public Being
{

}
于 2013-08-23T02:12:29.673 回答