zoukankan      html  css  js  c++  java
  • 函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function

    2013-07-08 14:42:45

    当使用的函数时重载函数时,若编译器不能判断出是哪个函数,就会出现二义性,并给出报错信息。

    问题描述:

    在.cpp代码中用到pow函数,如下:

    long int MaxInteger = pow( 2,8*sizeof(long int) -1 );

    编译,报错为:

    error C2668: 'pow' : ambiguous call to overloaded function

    error C2668: 'pow' : ambiguous call to overloaded function
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(583): could be 'long double pow(long double,int)'
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(581): or       'long double pow(long double,long double)'
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(535): or       'float pow(float,int)'
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(533): or       'float pow(float,float)'
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(497): or       'double pow(double,int)'
    1>          d:program filesmicrosoft visual studio 10.0vcincludemath.h(122): or       'double pow(double,double)'

    根据给出的信息,可知pow函数有6种重载函数,编译器根据给定的参数不能判断代码中使用的是哪个函数,因此报错。

    解决办法:

    可通过指定参数的类型解决,如下:

    MaxInteger = (long int) pow( (float)2,(int)( 8*sizeof(long int) - 1 ) )

    这样,编译器就直达是要用'long double pow(long double,int)'这个函数了。

  • 相关阅读:
    Linux下Socket编程之地址结构
    矫正Fedora 8中livna源Nvidia驱动托付关连
    Firefox3 RC1颁布各种新特征发扬阐发更平定
    Fedora 8中完全开启compizfusion特效
    编译安置gsopcast SVN版
    Sopcast for linux更新至3.01!
    措置惩罚Fedora 8中的装备权限标题成绩
    vsftp假造用户设置(Ubuntu8.04)
    QQ2008贺岁版 on FedoraBy wine 0.9.58
    vFU NET
  • 原文地址:https://www.cnblogs.com/youngforever/p/3177921.html
Copyright © 2011-2022 走看看