C++ 有没有办法访问C+;的私有成员变量+;复数类?
我使用标准C++库头中的内置复数类<代码> STD::复合< /代码>。我在HLS工具中应用了一个代码。该工具无法访问该复杂类的私有成员变量。有没有可能把它公之于众,或者我能做些什么C++ 有没有办法访问C+;的私有成员变量+;复数类?,c++,C++,我使用标准C++库头中的内置复数类 STD::复合< /代码>。我在HLS工具中应用了一个代码。该工具无法访问该复杂类的私有成员变量。有没有可能把它公之于众,或者我能做些什么 Error: /usrf01/prog/mentor/2015-16/RHELx86/QUESTA-SV-AFV_10.4c-5/questasim/gcc-4.7.4-linux_x86_64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.7.4/../../../../includ
Error: /usrf01/prog/mentor/2015-16/RHELx86/QUESTA-SV-AFV_10.4c-5/questasim/gcc-4.7.4-linux_x86_64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.7.4/../../../../include/c++/4.7.4/complex(222):
error: 'fpml::fixed_point<int, 16u, 15u> std::complex<fpml::fixed_point<int, 16u, 15u> >::_M_real' is private
错误:/usrf01/prog/mentor/2015-16/RHELx86/QUESTA-SV-AFV_10.4c-5/questasim/gcc-4.7.4-linux_x86_64/bin/。/lib/gcc/x86_64-unknown-linux-gnu/4.7.4/../../../../../../include/c++/4.7.4/complex(222):
错误:“fpml::fixed_point std::complex::_M_real”是私有的
std::complex
模板有点神奇:您有明确的权限将复数重新解释为两个标量的数组。更一般地说,以下是有效的:
std::complex<float> a[10];
float* r = reinterpret_cast<float*>(a);
for (int i = 0; i != 20; ++i) std::cout << r[i] << '\n';
std::复合物a[10];
浮动*r=重新解释铸件(a);
对于(inti=0;i!=20;++i)std::cout来说,访问成员的另一种方法是使用相应的getter,例如
#include <complex>
int main()
{
std::complex<float> c;
c.real(1);
c.imag(2);
return c.real();
}
#包括
int main()
{
std::复合物c;
c、 房地产(1);
c、 imag(2);
返回c.real();
}
当然,您不能从类外访问私有成员,这就是私有成员的意义所在。还有,“HLS工具”是什么?你到底想干什么?请和。然后学习如何创建一个。#定义私有公共
,千万不要这样做。我不知道!哪里说我们有明确的权限将复数重新解释为两个标量的数组