c++ - "+=" 操作在 std::complex 类型之间不起作用和 __complex__ 双
问题描述
我正在使用 Eigen 在 C++ 中执行一些矩阵操作。在其中,我有一条示意性的形式
MatrixXcd A = MatrixXcd::Zeros(10,10);
A(0,0) += 2.0*1i;
在我的本地计算机上编译它没有问题。但是,使用相同的 CMake 文件在不同的计算机上编译它会出现以下错误:
error: no match for ‘operator+=’ (operand types are ‘Eigen::DenseCoeffsBase<Eigen::Matrix<std::complex<double>, -1, -1>, 1>::Scalar {aka std::complex<double>}’ and ‘__complex__ double’)
所以不知何故类型std::comple<double>
和__complex__ double
不同,计算机无法解决差异。有人可以向我解释这些差异是什么,以及如何消除差异吗?我可以尝试弄清楚两台计算机的配置方式有何不同,但这似乎是一个更难获得在线帮助的问题。
解决方案
C++ 14 添加了新的文字语法以使a+bi
评估为std::complex<double>
.
添加应该足够了
set(CMAKE_CXX_STANDARD 14) # or 17
到您的 CMakeLists.txt 文件以使两个编译器再次同意。
推荐阅读
- javascript - JavaScript 中的触发器
- c# - c# 中的按钮 onclick 不会转到事件 button_click
- c++ - 尽管库(glew32.a)似乎很好,但在尝试构建 OpenGL 项目时出现错误(跳过不兼容)
- python - Jupyter 内核在尝试另存为 .VTP 文件时死机
- php - 如何在 PHP 中获取以换行符 (\n) 结尾的字符串的最后一个字符?
- javascript - 是否可以不发送两个人的消息?
- security - 在 Karaf 中使用签名的外部 JAR
- makefile - 在 AWS 服务器中为 Darknet 运行 Make 命令时出错
- c# - 在“System.Collections.Generic.List”类型中发现多个构造函数错误
- excel-formula - 对多个单元格中的文本数字求和