Das wäre einfacher, wenn du einen konkreten Anwendungsfall nennen würdest.
Allgemein würde ich in den meisten Fällen Klassen benutzen.
Auch zum Beispiel in Kombination mit Interfaces.
Ausnahmen sind zum Beispiel, wenn du Klassenoperatoren verwenden möchtest oder direkt mit reserviertem Speicher arbeiten möchtest, zum Beispiel zur Nutzung der Windows
API.