Sto usando una classe opzionale abbastanza simile a quella di boost. Per ragioni semantiche, ho cambiato un attributo dello stesso tipo (strutturato) in alcune definizioni di classe (e quindi anche nelle firme dei metodi) da obbligatorio a facoltativo. Quindi, in ogni file di intestazione di classe correlato, ho incluso l'intestazione con la definizione di Facoltativo e anche un typedef
per facilitare la digitazione (vedere CHANGE
commenti); i passaggi sono letti in questo modo:
#include <MyAttrType.h>
#include <Optional.h> // CHANGE
typedef Optional<MyAttrType> OptionalAttrType // CHANGE
class MyClassX
{
// ...
Oggi eseguo Cppcheck 1.68 sul progetto e ho ricevuto questo avviso di stile:
The typedef 'OptionalAttrType' hides a typedef with the same name.
Come faccio a sbarazzarmi di questi avvertimenti di stile senza fare qualcosa di male?
Nota:
-
MyAttrType
è attualmente indipendente daOptional
(perché definito nelle prime fasi della cronologia del progetto, mentre Opzionale era l'ultima volta) - Penso di introdurre una nuova intestazione solo per questo scopo. Ma forse ci sono opzioni migliori?
- Immagino che potrebbe essere generalmente un'indicazione di un cattivo design, di avere molte classi con lo stesso attributo opzionale, ma non sono sicuro nel mio caso particolare. Il codice sta attualmente cambiando per raggiungere obiettivi con priorità più elevata.
- naturalmente,
MyAttrType
,OptionalAttrType
eMyClassX
non sono i nomi effettivi