Presumo che la definizione della struttura faccia parte di alcune funzionalità/libreria di terze parti, in cui la terza parte potrebbe essere qualcuno all'interno della propria azienda.
Se gli implementatori hanno scelto di non rendere un puntatore stData
, ci sono dei motivi. Avranno un'idea su come esprimere "stData
è vuoto", se è anche permesso di essere vuoto. Dovresti assolutamente cercare di cercare quelle semantiche nella documentazione o parlare con loro. Non cercare di aggiungere la tua semantica a una struttura che ha uno scopo e una semantica specifici.
Quindi se è un modo predefinito per esprimere che la parte della struttura è vuota, utilizzare in questo modo. Se non può essere vuoto per gli usi a cui è destinato, quindi non provare a renderlo vuoto. In poche parole, non usare una classe/struct in un modo in cui non è pensata per essere utilizzata. Invece, se ti trovi in una situazione in cui hai solo una parte dei dati necessari per il 'MyData' per avere un senso, allora scrivi la tua struttura 'MyPartialData' per far fronte a quella situazione e tradurla in un 'MyData' una volta che hai tutto il necessario e sei pronto per interagire con l'API di terze parti.
fonte
2014-09-18 08:11:33
In generale non è possibile. Ma 'AnotherStruct' potrebbe avere un campo chiamato' empty', e potresti verificarlo. – juanchopanza
La nullità si applica solo ai puntatori. Temo che tu stia facendo supposizioni su C++ che derivano da uno sfondo Java o forse addirittura C#, ma dovrai disimparerle. BTW: C e C++ sono anche lingue diverse, quindi le risposte a una generalmente non si applicano all'altra, sebbene questo caso sia un'eccezione. –
Questo dipenderà dal caso. Non è un puntatore quindi non può essere "null". Può essere zerofilled ma non significa che sia vuoto, significa solo che è pieno di zeri. Credo che ci sia qualche proprietà di 'AnotherStruct' che usi per verificare la sua validità, non c'è proprio modo di dirti di cosa si tratta senza sapere come dovrebbe essere usata questa struttura. – Havenard