【发布时间】:2014-08-08 11:47:45
【问题描述】:
(主要编辑:我提出原始问题的方式有点混乱。所以,我正在努力改进问题)
我正在尝试将“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;但是,作为这样的“静态 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
我收到以下错误(代码 sn-p 中标记的第 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 似乎不是恒定的。
【问题讨论】:
-
错误信息很清楚,不能分配给
const的变量。不能为const变量分配新值,这就是为什么要首先声明变量const。 -
另外,在
myRFPulseArray[IRF_MAX_ENVELOPE_ELEMENTS2]的上下文中,该值不是参数,而是由该语句创建的sSample数组的大小。