3

我编写了一个应用程序,我经常在其中使用库中pow的函数。math.h我试图重载operator^以使求幂更容易和更快。我写了这段代码:

#include <iostream>
#include <math.h>

using namespace std;

int operator^(int, int); // line 6    
int main(int argc, char * argv[]) { /* ... */ }

int operator^(int a, int n)   // line 21
{
  return pow(a,n);
}

编译器(我在 Linux 上使用 g++)返回了这些错误:

main.cpp:6:23: 错误: 'int operator^(int, int)' 必须有类或枚举类型的参数 main.cpp:21:27: error: 'int operator^(int, int)' 必须有一个类或枚举类型的参数

4

2 回答 2

9

您不能重载运算符以仅对内置类型进行操作。

正如编译器错误消息中明确说明的那样,至少一个参数必须是用户定义的类或枚举类型(或对其中之一的引用)。

于 2012-05-09T07:07:06.410 回答
6

我试图重载 operator^ 以使求幂更容易和更快

你拼错了混淆,因为它肯定不是更快也不是更容易。如果您这样做,任何维护您的代码的人都会讨厌您。

幸运的是,C++ 要求至少一个参数是用户定义的类型,所以你不能这样做。

于 2012-05-09T07:09:41.580 回答