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