Были два класса
CSerial; //базовая работа с COM портом и все константы
CSerialEx : CSerial; //мониторит порт в отдельном потоке
Потом копипастом добавилось еще два, отличающиеся только одной вложенной структурой (внутри базового) и вызывающие другой API (D2XX вместо виртуального COM порта, отличается грубо говоря префиксом в именах функций и использованием той самой структуры)
CFTSerial; //базовая работа с COM портом через D2XX и все константы
CFTSerialEx : CFTSerial; //мониторит порт в отдельном потоке
Вопрос, как организовать это и минимизировать копипаст?