c++ - "more than one instance of overloaded function "标准::战俘 "matches the argument list"

标签 c++ namespaces constants c-preprocessor

使用C++,我尝试

#define TINY std::pow(10,-10)

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

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

using namespace std;

#define TINY std::pow(10,-10)

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

IntelliSense: more than one instance of overloaded function "std::pow" matches the argument list

什么是正确的语法?

最佳答案

编辑: 我同意评论者的说法,即使用 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)

分别。

关于c++ - "more than one instance of overloaded function "标准::战俘 "matches the argument list",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554967/

相关文章:

c++ - Ubuntu 13.10 中的 GCC iostream fstream 错误

r - 如何在 Shiny 模块中使用 ShinyFiles 包 - 命名空间问题?

python - 对常量进行分类(并能够确定其类别)

c - #define 字符串与数字定义

c++ - 在 map 中存储引用

c++ - 如何在数组中添加对象成员?

c++ - 从管道读取输入时出现 scanf 问题

php - 是否可以通过 Composer 的自动加载器向普通类库添加命名空间?

javascript - 我应该如何定义 JavaScript 'namespace' 以满足 JSLint 要求?

c++ - Boost 数值常量优点