theproject Posted June 21, 2006 Report Share Posted June 21, 2006 Boas, nao sou master em C++ ptt tenho uma duvida que gostava que alguem me explicasse sff. O prob e o seguinte: tenho uma classe A que tem um la dentro um campo de outra classe B (simples) o meu problema é que quando defino esse campo sou obrigado a escrever class B _nomeDaVar; Porque razao é que nao posso escrever apenas B _nomeDaVar; ?? pensava que ao criar uma classe o C++ fazia logo um typedef com o nome da classe... Vou postar o código em questao para nao haver dúvidas, gostava mesmo de perceber a razão disto... (...) #include <D3d9.h> #include <d3dx9.h> #include "world.h" #include "camera.h" class worldRenderer{ private: IDirect3DDevice9* _device; int _scrHeight; int _scrWidth; int _fps; world* _w; (...) E a classe world esta definida assim: #include "linkedList.h" #include "simpleObject.h" class world{ private: linkedList _simpleObjects; (...) Eu tenho os #ifndef nos .h's e as definicoes das classes nos .h's ... Porque razao o compilador descarrila com o world*_w; ???? Já vi que escrevendo class world* _w; funciona, mas pk? Desde já agradecido. Link to comment Share on other sites More sharing options...
rAtOOn Posted June 21, 2006 Report Share Posted June 21, 2006 Seria suposto poderes definir a variavel sem o class antes: world *_w Que erro é que apareçe? P.S. uma classe e um typedef, são coisas totalmente distintas. Link to comment Share on other sites More sharing options...
theproject Posted June 22, 2006 Author Report Share Posted June 22, 2006 Eu sei que sao coisas totalmente diferentes, mas ao contrario do C , o C++ define logo o tipo, algo que em C teria de fazer com typedef struct _xpto{ (...) } xpto; para poderes usar o tipo xpto.era isso que queria dizer, com " ele faz o typdef logo" O erro que ele me dava nao era explícito, dizia que faltava um ; antes de _w... continuo sem perceber o porquê de pecisar do token class antes... eu já fiz outras classes algumas compostas e nao precisei... Daí o meu post... Btw, tou a usar o compilador do visual ++ express.. Link to comment Share on other sites More sharing options...
brink@ero Posted June 22, 2006 Report Share Posted June 22, 2006 É complicado responder, mas acho que a fonte do problema não está aí, deve ser algum erro nos constructores ou de incompatibilidade entre as bibliotecas... não sei 😉 Eu fiz isto e deu normalmente, como não tenho essas bibliotecas pus certas instruções em comentário: //#include <D3d9.h> //#include <d3dx9.h> class world { public: int a; private: //linkedList _simpleObjects; }; class worldRenderer { public: //IDirect3DDevice9* _device; int _scrHeight; int _scrWidth; int _fps; world* _w; }; int main() { worldRenderer a; a._w=new world; a._w->a=10; return 0; }; Cumpr. bk@ero ? Link to comment Share on other sites More sharing options...
theproject Posted June 22, 2006 Author Report Share Posted June 22, 2006 :s ... Nao percebo mesmo isto, ou e alguma feature obscura do C++ ou entao existe alguma funcao/classe kk coisa no Direct3D com o mesmo nome, a verdade é que tirando o "class" de lá obtenho : worldrenderer.h(19) : error C2143: syntax error : missing ';' before '*' e a partir o compilador comeca a descarrilar porque já nao percebe nd... já metendo o "class" antes tudo compila como suposto... De qq forma se alguem souber a razao... cumprimentos Link to comment Share on other sites More sharing options...
brink@ero Posted June 22, 2006 Report Share Posted June 22, 2006 :s ... Nao percebo mesmo isto, ou e alguma feature obscura do C++ ou entao existe alguma funcao/classe kk coisa no Direct3D com o mesmo nome, a verdade é que tirando o "class" de lá obtenho : worldrenderer.h(19) : error C2143: syntax error : missing ';' before '*' e a partir o compilador comeca a descarrilar porque já nao percebe nd... já metendo o "class" antes tudo compila como suposto... De qq forma se alguem souber a razao... cumprimentos Só tendo todos os files/bibliotecas e eu tentar compilar aqui é que talvez consiga ajudar. Só aquilo que estas a dizer... não consigo ver a razão. Nunca tive problemas do género... 😉 Cumpr. bk@ero 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now