重载operator ^为整数类型

时间:2012-05-09 07:05:53

标签: c++ compiler-errors operators operator-overloading

我写了一个应用程序,其中我经常使用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:错误:'int operator ^(int,   int)'必须有类的参数或枚举类型

2 个答案:

答案 0 :(得分:9)

您不能让操作员超载以仅在内置类型上操作

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

答案 1 :(得分:6)

  

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

你错误拼写令人困惑,因为它肯定不是更快也不容易。 任何维护您的代码都会让您讨厌。

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