theproject Posted June 21, 2006 at 07:05 PM Report #34143 Posted June 21, 2006 at 07:05 PM 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.
rAtOOn Posted June 21, 2006 at 07:50 PM Report #34154 Posted June 21, 2006 at 07:50 PM 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.
theproject Posted June 22, 2006 at 04:18 AM Author Report #34193 Posted June 22, 2006 at 04:18 AM 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..
brink@ero Posted June 22, 2006 at 12:42 PM Report #34226 Posted June 22, 2006 at 12:42 PM É 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 ?
theproject Posted June 22, 2006 at 06:22 PM Author Report #34291 Posted June 22, 2006 at 06:22 PM :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
brink@ero Posted June 22, 2006 at 09:04 PM Report #34323 Posted June 22, 2006 at 09:04 PM :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 😛
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