La dichiarazione anticipata è un meccanismo per ridurre il numero di file inclusi nei file di intestazione. Ma qual'è la sintassi corretta per dichiarare anticipatamente una classe che si trova all'interno di un dato namespace?
Utilizzando la seguente dichiarazione:
001class A::B::ClassName;
il compilatore genera un errore del tipo:
namespace "A::B" has no tag member named "CClassName"
Esistono due modi per risolvere il problema. Il primo consiste nel definire il name space utilizzando le parole chiave using namespace e successivamente dichiarare la classe.
001using namespace A::B;
002class ClassName;
Il secondo metodo, invece, consiste nel deifinire la dichiarazione anticipata come segue:
001namespace A {
002 namespace B {
003 class ClassName;
004}};
La seconda alternativa è preferibile poiché l'utilizzo delle parole chiave using namespace all'interno di un file di inclusione può avere effetti collaterali anche negli altri file di intestazione che lo includono.
Vota questo articolo per primo
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5