gpt4 book ai didi

c++ - 指向成员模板类的指针

转载 作者:太空狗 更新时间:2023-10-29 21:46:52 26 4
gpt4 key购买 nike

AbstractFieldCollection是hardwareMissingAlarm等的基类。hardwareMissingAlarm 属于另一个模板类。

alarmFieldCollection.push_back((AbstractAlarmField Device::*)  &Device::hardwareMissingAlarm);
alarmFieldCollection.push_back((AbstractAlarmField Device::*) &Device::hardwareErrorAlarm);
alarmFieldCollection.push_back((AbstractAlarmField Device::*) &Device::badConfigAlarm);``

然后在另一个函数中,我正在读取这样的 vector :

for(int32_t i=0; i<alarmFieldCollection.size(); i++) 
{
AbstractAlarmField Device::* pAF = alarmFieldCollection[i];
std::cout << "isRaised: "<< pDev << std::endl;
if ((pDev->*pAF).isRaised(pContext))
{
.....
}
}

pDev 是设备对象,但是pDev->*pAF 返回NULL。事实上,当我打印 &Device::hardwareErrorAlarm 时,&Device::hardwareMissingAlarm 结果是 1。我不知道我做错了什么。

isRaised 是属于类 AbstractAlarmField 的方法。

提前致谢。

最佳答案

您几乎没有提供任何代码,但看起来您是按值存储抽象对象,而不是按引用或指针。这可能会导致对象切片和任何类型的内存问题。尝试使用 AbstractAlarmField& 作为 Device 字段的类型。

关于c++ - 指向成员模板类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319748/

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