ちなみに、参照ポインタを使うと、前者は ...
const ATA_SMART_INFO &info=vars[index];
// 中略
else
if((info.Attribute[j].Id == 0xE8 && (info.DiskVendorId == SSD_VENDOR_PLEXTOR || info.DiskVendorId == SSD_VENDOR_SANDISK))
|| (info.Attribute[j].Id == 0xBB && info.DiskVendorId == SSD_VENDOR_MTRON)
|| (info.Attribute[j].Id == 0xB1 && info.DiskVendorId == SSD_VENDOR_SAMSUNG)
|| (info.Attribute[j].Id == 0xD1 && info.DiskVendorId == SSD_VENDOR_INDILINX)
|| (info.Attribute[j].Id == 0xE7 && info.DiskVendorId == SSD_VENDOR_SANDFORCE)
|| (info.Attribute[j].Id == 0xAA && info.DiskVendorId == SSD_VENDOR_JMICRON && ! info.IsRawValues8)
|| (info.Attribute[j].Id == 0xCA && info.DiskVendorId == SSD_VENDOR_MICRON)
|| (info.Attribute[j].Id == 0xE9 && (info.DiskVendorId == SSD_VENDOR_INTEL || info.DiskVendorId == SSD_VENDOR_OCZ || info.DiskVendorId == SSD_VENDOR_OCZ_VECTOR))
)
後者は ...
const ATA_SMART_INFO &info=m_Ata.vars[index];
// 中略
else
if((info.Attribute[j].Id == 0xE8 && (info.DiskVendorId == m_Ata.SSD_VENDOR_PLEXTOR || info.DiskVendorId == m_Ata.SSD_VENDOR_SANDISK))
|| (info.Attribute[j].Id == 0xBB && info.DiskVendorId == m_Ata.SSD_VENDOR_MTRON)
|| (info.Attribute[j].Id == 0xB1 && info.DiskVendorId == m_Ata.SSD_VENDOR_SAMSUNG)
|| (info.Attribute[j].Id == 0xD1 && info.DiskVendorId == m_Ata.SSD_VENDOR_INDILINX)
|| (info.Attribute[j].Id == 0xE7 && info.DiskVendorId == m_Ata.SSD_VENDOR_SANDFORCE)
|| (info.Attribute[j].Id == 0xAA && info.DiskVendorId == m_Ata.SSD_VENDOR_JMICRON && ! info.IsRawValues8)
|| (info.Attribute[j].Id == 0xCA && info.DiskVendorId == m_Ata.SSD_VENDOR_MICRON)
|| (info.Attribute[j].Id == 0xE9 && (info.DiskVendorId == m_Ata.SSD_VENDOR_INTEL || info.DiskVendorId == m_Ata.SSD_VENDOR_OCZ || info.DiskVendorId == m_Ata.SSD_VENDOR_OCZ_VECTOR))
)
と簡潔に書けます。 また、「m_Ata.SSD_VENDOR_PLEXTOR」等のenum値は、「CAtaSmart::SSD_VENDOR_PLEXTOR」
とも書けますが、そもそもenum定数の定義をCAtaSmartクラス外へ出せば、
クラスの指定は不要で、両者のコードは同じになります。