多个静态类成员函数都具有相同的参数并返回

时间:2012-06-28 08:59:50

标签: c++ member-function-pointers

在C ++中,假设我有以下头文件:

class Foo {
  static int func0 (int, int);
  static int func1 (int, int);
  static int func2 (int, int);
  static int func3 (int, int);
};

无论如何通过typedef做到这一点?

我试过了:

class Foo {
  typedef int(*func)(int, int);
  static func func1;
  static func func2;
  static func func3;
  static func func4;
};

然后在cpp文件中

int Foo::func1(int a, int b) { return a + b; }

但是我收到了错误:

  

将func1重新定义为不同类型的符号

2 个答案:

答案 0 :(得分:1)

func1已被声明为函数指针,而不是您尝试将其定义为的函数。

使用函数指针的示例:

typedef int (*func_t)(int, int);

int func1(int a, int b) { return a + b; }
int func2(int a, int b) { return a * b; }

funct_t op = func1;
assert(9 == op(4, 5));

op = func2;
assert(20 == op(4, 5));

话虽如此,我不确定你的确切意图是什么。

答案 1 :(得分:1)

你不能用typedef做你想做的事,但如果你真的想要这样做,你可以使用预处理器。

#define MAKE_MY_FUNC(funcname) static int funcname(int, int)

class Foo {
  MAKE_MY_FUNC(func0);
  MAKE_MY_FUNC(func1);
  MAKE_MY_FUNC(func2);
  MAKE_MY_FUNC(func3);
};

#undef MAKE_MY_FUNC  // To make sure that you don't get preprocessor misery afterwards.