gpt4 book ai didi

c++ - 为什么对 gr_complex 变量 (GNU Radio) 的赋值对我不起作用?

转载 作者:行者123 更新时间:2023-11-30 01:37:12 25 4
gpt4 key购买 nike

在我的自定义 SDR 收发器硬件的 block 定义中,我使用了以下复杂变量:

gr_complex complexSample;

在我的代码中,在最近升级到最新的 gnuradio 版本之前已经成功运行了两年,我使用了以下分配:

complexSample.real() = realInt;
complexSample.imag()= imagInt;

但是,当我现在尝试编译时,出现以下错误:

error: lvalue required as left operand of assignment

令人沮丧的是,如果我删除一对括号,我会收到以下错误:

error: invalid use of member function 'void std::complex::imag(float)' (did you forget the '()'? )

原始版本gnuradio我一直用的是3.7.5-5,最新升级到:3.7.10.1-2

这两个版本之间有什么重大变化可以解释这种行为差异吗?

如果是,解决方案是什么?

这会不会与“Volk 集成”有关(不管那是什么……)。

最佳答案

不,GNU Radio 没有改变gr_complex .它仍然只是 std::complex<float> 的别名.

可能发生变化的是您现在使用的编译器设置为 C++14,这使得 std::complex<float>.real()返回一个你不能分配给的常量。 (我认为这就是发生的事情。)

您应该按照您的意思构建值,即

gr_complex foo(realpart, imagpart)

或者使用 setter

gr_complex foo;
foo.real(realpart);
foo.imag(imagpart);

关于c++ - 为什么对 gr_complex 变量 (GNU Radio) 的赋值对我不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com