gpt4 book ai didi

c++ - 在 init 方法中绕过 const

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:28 24 4
gpt4 key购买 nike

所以我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);
}

最佳答案

你可以考虑const_cast和指针,但最好非常很少使用。像...

EPWM_REGS** regsPP = const_cast<EPWM_REGS**>(&regs);
*regsPP = _regs;

关于c++ - 在 init 方法中绕过 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2410191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com