所以我不能在我的类构造函数中使用初始化器,因为使用了数组,所以我决定使用一个init()方法.现在我有一个不同的问题.我有一个这样的课:
class EPWM {
private:
volatile EPWM_REGS* const regs;
public:
void init(volatile EPWM_REGS* _regs);
};
Run Code Online (Sandbox Code Playgroud)
我需要init()通过初始化来实现,regs = _regs;但我不能因为const.有没有办法在我的init方法中强制赋值?我想保留const关键字,所以我不小心在其他地方重新分配.
编辑:尽管我想使用构造函数+初始化程序,这将解决这个问题(我的代码用来做这个),我不能因为我有另一个类,它有一个EPWM对象数组,我无法初始化这些对象,因为C++不支持数组成员的初始化程序.(再看看我刚才就这个问题问过的另一个问题.)
使用EPWM的上下文是这样的:
class PwmGroup {
private:
EPWM *epwm;
void init(EPWM *_epwm) { epwm = _epwm; }
};
/* ... */
// main code:
EPWM epwm[3];
PwmGroup pwmGroup;
{
// EPwm1Regs, EPwm2Regs, EPwm3Regs are structs
// defined by TI's include files for this processor
epwm[0].init(&EPwm1Regs);
epwm[1].init(&EPwm2Regs);
epwm[2].init(&EPwm3Regs);
pwmGroup.init(epwm);
}
Run Code Online (Sandbox Code Playgroud)
您可以考虑const_cast并指出,但最好很少使用它。就像是...
EPWM_REGS** regsPP = const_cast<EPWM_REGS**>(®s);
*regsPP = _regs;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |