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
。
前もって感謝します。