AbstractFieldCollection 是hardwareMissingAlarm 等的基类。hardwareMissingAlarm 属于另一个模板类。
alarmFieldCollection.push_back((AbstractAlarmField Device::*) &Device::hardwareMissingAlarm);
alarmFieldCollection.push_back((AbstractAlarmField Device::*) &Device::hardwareErrorAlarm);
alarmFieldCollection.push_back((AbstractAlarmField Device::*) &Device::badConfigAlarm);``
然后在另一个函数中,我正在读取这样的向量:
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
是 Device 对象,但pDev->*pAF
返回NULL
. 事实上,当我打印时&Device::hardwareErrorAlarm
,&Device::hardwareMissingAlarm
结果是 1。我不知道我做错了什么。
isRaised
是属于的方法class AbstractAlarmField
。
提前致谢。