math.h 和 cmath 之间的冲突
Conflict between math.h and cmath?
由于"歧义",我在编译时遇到了麻烦。我有:
#include <cmath>
#include <math.h>
float q;
setActivacion(1/(1+pow(M_E,-q)));
编译器 说:ISO C++ 说这些是模棱两可的,即使第一个最差的转换比第二个最差的转换要好:
双倍战俘(双倍、双倍)浮子标准::p ow(浮子,浮子)
我尝试将直接十进制值插入 pow() 的参数中,它可以工作。它似乎在获取变量时遇到麻烦。
提前谢谢。
这是因为C++标准库包含 C 标准库 - math.h 和 cmath 应该是相同的,除了 cmath 将所有内容放在 std::
命名空间中。所以不要同时包括它们 - 如果你正在使用C++,你可能应该只#include <cmath>
。
错误消息告诉您应该传入两个浮点数或两个双精度值。你正在传递一个双精度和一个浮点数。
试试pow(M_E, static_cast<double>(-q))
对于它的价值,我无法从 g++ (4.5.3) 中消除此错误。我可以从 Comeau 中得到类似的错误,即使我只包含两个标头之一(无论哪个)。
可能是 gcc 实现的一些细节,这意味着只有一个匹配版本的 pow
.可能是在您的编译器上,仅包含一个标头或为 pow
指定命名空间也可以消除歧义。但是,依赖依赖于实现细节的修复通常不是一个好主意。
你可能在
某个地方有using namespace std;
,不是吗?您还可以指定所需的版本,即 using std::pow
或using ::pow
(来自内存的语法,但希望你明白了)。
相关文章:
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 库之间的冲突
- 如何避免 Cocos2d-x 3.15.1 中的 MenuItemImage 和 MenuItemSprite 之间的冲突
- 包括两个文件 C++ 之间的冲突
- 如何解决两个不使用命名空间的第三方库之间的类名冲突?
- 2 个 QGraphicsPixmapItems 之间的 QT 冲突检测
- 字符串和整数之间的模板冲突
- 两个提升版本之间的冲突
- C++编译错误是由于使用 std::move 时运动构造函数与其他非运动构造函数之间的冲突
- 调用 ADL 时,表达式和命名空间之间是否会发生冲突
- 复制构造函数和模板构造函数之间的冲突
- 名称名称空间和类模板之间的冲突:不同的编译器行为
- 如何解决GMP的32位和64位库之间的冲突
- OpenCV和Tesseract之间是否存在任何冲突
- 最新版本的提升和提升几何库 (GGL) 之间的冲突
- 包含:stdafx.h 和 <vector> VisualStudio 2012 C++ 之间的冲突(错误 C2953:已定义类模板)
- 类名和枚举值之间的冲突:无需命名空间即可解析
- C Socket 和 Omnet++ 之间的方法名称冲突
- 在类层次结构中,完美的转发构造函数和复制构造函数之间的冲突