c++ - c++如何访问STL复数+二元运算符
问题描述
您好,我无法访问 STL complex + binary operator,我的 fVector 是从 std::complex 派生的,我尝试调用 std::complex binary + operator 函数来进行计算,但我说它确实有 operator + 的成员。
好的,根据请求更新我的更多代码,有 3 个文件是 fVector2D_test.cpp fVector2D.cpp 和 fVector2D.hpp
#include <iostream>
#include <complex>
#include "fVector2D.hpp"
//using namespace std;
using std::cout;
using std::endl;
int main()
{
/*fVector2D u, v(2.4f, 7), w(v);
cout << v.X(); u = fVector2D(u.X(), v.Y());
cout << u <<endl;
// v.Y() = 3.4f; // compiler error
fVector2D a(1, 2), b(2, 3);
float dot = a*b;
cout << dot <<endl;
cout << fVector2D::EX << "+" << fVector2D::EY;*/
fVector2D v(3,4.1f), u(1.2f,8.5f);
fVector2D w = u + v;
cout << w << endl;
//w = exp(std::complex<float>(0,0.2f))*v;
//cout << w << endl;
// cout << (u*v) << endl;
//cout << fVector2D::EX << endl;
//cout << fVector2D::EY << endl;
//cout << abs(v) << endl;
return 0;
}
#include <complex>
class fVector2D : public std::complex<float>
{
public:
fVector2D(float x=0, float y =0);
fVector2D(const fVector2D& floatVector2D);
float X()const;
float Y()const;
//static const EX;
//static const EY;
private:
};
fVector2D operator+(const fVector2D& , const fVector2D&);
#include "fVector2D.hpp"
fVector2D::fVector2D(float x, float y)
: std::complex<float>(x, y)
{
}
fVector2D::fVector2D(const fVector2D& floatVector2D)
: std::complex<float>(floatVector2D)
{
}
float fVector2D::X()const
{
return real();
}
float fVector2D::Y()const
{
return imag();
}
fVector2D operator+(const fVector2D& lhs, const fVector2D& rhs)
{
return std::complex<float>::operator+(lhs,rhs);// compile error , no operator + in the member
}
解决方案
复数的 +是自由函数,而不是成员函数。这就是为什么您不能使用complex<float>::
语法访问它的原因。
除了这个问题,您的代码还有其他问题(我无法看到任何想要从 std::complex 继承的真实场景),但这超出了问题的范围。
推荐阅读
- javascript - JavaScript:将偶数值元素的总和添加到给定数组中的每个奇数值元素;显示新数组
- android - 使用 Firebase 数据库 childEventListener 的重复项
- java - 在安卓应用程序的客户和卖家之间维护单一数据库
- python - 为什么即使请求计数只有 1,我也会在 scrapy 响应中收到 429 请求?
- python - 将仅包含行的连续文本文件解析为熊猫数据框
- r - 如何编写一个总结我的降水值的循环
- javascript - react-native-background-timer 在 Android 上不一致地用于录制音频
- r - 使用 R 中 data.table 中的元数据创建自定义 JSON
- javascript - 按下键时删除 input.value
- python - Animated lineplot with python plotly