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

Calendario

<<  settembre 2010  >>
lumamegivesado
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar
Licenza d'uso
Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati mediante:

Licenza Creative Common