首页 > 解决方案 > 使用自定义类型定义多个同名函数

问题描述

我一直在玩 C++,我注意到一些我不太理解的东西:

typedef float degrees;
typedef float radians;

void my_func(degrees n);
void my_func(radians m);

像这样声明一个函数,我收到一个警告,该函数被重新声明,好像它们是相同的。这是否意味着,在查看函数定义时,编译器只看到内置类型而不关心自定义类型,并且由于它们是机器人浮点数,它只是认为它们是同一个函数?...

如果是这种情况,我该如何解决?我只需要制作不同的功能吗?

标签: c++function-declarationcustom-type

解决方案


您可以定义类来处理这些问题。看这个例子:

class Degree{
public:
  double angle;
  Degree(){}
  void my_func(){
    // do some job
  }
};

class Radian{
public:
  double angle;
  Radian(){}
  void my_func(){
    // do some job
  }
};

int main(){
  Degree deg;
  Radian rad;

  deg.my_func();
  rad.my_func();
}

现在他们在各自的职能中执行不同的任务。

或者,如果您不想创建对象,则可以在这些类中创建静态函数。

class Radian{
public:

  static void my_func(float radian){
    // do some job
  }
};

typedef float degrees;
typedef float radians;

int main(){
  radians rad;

  Radian::my_func(rad)
}

推荐阅读