"多个重载函数实例"std :: pow"匹配参数列表"

kir*_*off 5 c++ namespaces constants c-preprocessor

用C++,我试着

#define TINY std::pow(10,-10)
Run Code Online (Sandbox Code Playgroud)

我给代码提供了#include定义TINY的类(.h)的命名空间信息

#pragma once
#include "MMath.h"
#include <string>
#include <cmath>
#include <vector>

using namespace std;

#define TINY std::pow(10,-10)
Run Code Online (Sandbox Code Playgroud)

我在.cpp文件中的某些函数实现中使用TINY,而TINY给出了错误

IntelliSense:多个重载函数"std :: pow"的实例与参数列表匹配

什么是正确的语法?

pmd*_*mdj 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 );
Run Code Online (Sandbox Code Playgroud)

你可以调用如下:

std::pow(10.0f, -10.0f)
std::pow(10.0, -10)
std::pow(10.0L, -10)
Run Code Online (Sandbox Code Playgroud)

分别.