使用C ++,我尝试
#define TINY std::pow(10,-10)
我给代码提供#include
和类(.h)的命名空间信息,其中定义了TINY
#pragma once
#include "MMath.h"
#include <string>
#include <cmath>
#include <vector>
using namespace std;
#define TINY std::pow(10,-10)
我在.cpp文件中的某些函数实现中使用TINY,而TINY给出了错误
IntelliSense:多个重载函数实例“std :: pow”与参数列表匹配
什么是正确的语法?
答案 0 :(得分:10)
编辑:我同意评论者说使用std :: pow()代替文字常量是不必要的 - 所以对于这个特殊问题,请使用1.0E-10
不变;我对你得到的实际错误的解释以及解决问题的方法仍然存在。
这与您的#define
无关。 std::pow()
是一个重载函数,它的所有重载都没有(int, int)
作为参数。您应该提供具有明确选择重载的类型的参数。根据所需的返回值类型,您可能希望选择其中一个重载:
float pow ( float base, float exponent );
double pow ( double base, int exponent );
long double pow ( long double base, int exponent );
您可以按如下方式调用:
std::pow(10.0f, -10.0f)
std::pow(10.0, -10)
std::pow(10.0L, -10)
分别
答案 1 :(得分:2)
我认为最好的方法是定义一个常量变量并在不使用pow
函数的情况下对其进行初始化,如下所示
const double TINY = 1E-10; //1e-10 is 10 to the power of -10
答案 2 :(得分:1)
请尝试使用std::pow(10.0,-10.0)
:std::pow
有多个overloads与您的参数列表匹配;指定10.0,-10.0
强制使用特定的重载:
double pow(double base, double exponent);
请注意,根据#define
的使用情况,此TINY
可能不是最理想的:每次在代码中使用时,都会调用std::pow
来计算相同的值。更好的方法是使用静态变量,设置一次,然后从那一点开始使用它。