【发布时间】:2011-01-25 11:53:02
【问题描述】:
所以我can't use initializers in my class constructor 因为使用了数组,所以我决定改用init() 方法。现在我有一个不同的问题。我有这样的课:
class EPWM {
private:
volatile EPWM_REGS* const regs;
public:
void init(volatile EPWM_REGS* _regs);
};
我需要通过初始化regs = _regs; 来实现init(),但由于const 而我不能。有没有办法在我的 init 方法中强制分配?我想保留 const 关键字,这样我就不会意外地在其他地方重新分配。
编辑: 尽可能多地使用构造函数 + 初始化程序,这将解决这个问题(我的代码曾经这样做),我不能,因为我有另一个类,它有一个数组EPWM 对象,我无法初始化这些对象,因为 C++ 不支持数组成员的初始化程序。 (再次,请参阅the other question I asked a little while ago on this subject.)
使用 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);
}
【问题讨论】:
-
为什么不在 ctor 中初始化 const
regs成员?它是否依赖于其他数组进行初始化? -
我有另一个类,它有一个 EPWM 对象数组,我无法在构造函数中初始化,因为 C++ 不允许这样的事情。
-
我明白你的问题。演员阵容总是让我对设计三思而后行。
-
嘿。我现在想了五六次关于这个设计。 :-) 每次我想找到更好的方法时,我总能找到一些回到尝试初始化对象数组的问题。
-
@Jason S:看我的回答。这有帮助吗?