(主要编辑:我提出原始问题的方式有点令人困惑。所以,我正在努力改进这个问题)
我正在尝试将“int32_t”转换为“static const int32_t”类型。但是,我无法弄清楚如何一起使用static_cast和const_cast。任何帮助将不胜感激。
我想这样做,而不是将我的“static const int32_t IRF_MAX_ENVELOPE_ELEMENTS2”初始化为硬核值,我想根据传递给相关函数的值来设置它。
说,iNoOfSamples_In的值是128,我也想将IRF_MAX_ENVELOPE_ELEMENTS2设置为128;但是,像这样的“static const int32_t”:
int32_t iNoOfSamples_In = 128;
static const int32_t IRF_MAX_ENVELOPE_ELEMENTS2 = iNoOfSamples_In;
但是,当我去声明一个大小为IRF_MAX_ENVELOPE_ELEMENTS2的数组
double dTime_Scale[IRF_MAX_ENVELOPE_ELEMENTS2]; // Line 80
我收到以下错误(代码段中标记了第80行):
SpecialPulses.cpp(80) : error C2057: expected constant expression
SpecialPulses.cpp(80) : error C2466: cannot allocate an array of constant size 0
SpecialPulses.cpp(80) : error C2133: 'dTime_Scale' : unknown size
所以,似乎max_envelope_elements不是常数。
答案 0 :(得分:0)
正如错误消息所示,您无法将变量声明为const
,然后更改其值。但是,如果您尝试调用一个const int_32
的函数,那很好 - 只需将变量声明为int_32
即可。在这种情况下,const
只是说函数不会改变函数内部参数的值,但即使这样做也不会影响你的变量。
答案 1 :(得分:0)
通过const表示它是常量,根据定义,常量是:
不会改变的情况或事态。 - 谷歌“
因此在启动后不能更改const变量的值。
请注意,const大部分时间用于代码可读性,以代替代码中的幻数。
以此为例
if(a>b%2)
//do something
到底是什么2,那是做什么的?
而如果你真的可以使用这样的东西。
if(a>b%SOME_CONST_VALUE)
//do something
你实际上可以通过const变量来判断你实际在做什么,而不是让程序员/开发人员维护你的代码,而if语句就是这样做的。
答案 2 :(得分:0)
const_cast<int32_t>(IRF_MAX_ENVELOPE_ELEMENTS2)=256;
您可以像这样更改常量值,我希望这可以帮助您解决问题。