Ir ao conteúdo
  • Cadastre-se

C\C++ 11 - win32 : como fazer 2 construtores numa class?


Cambalinho

Posts recomendados

como posso fazer 2 construtores numa class?

Menu(string caption="&Menu",HMENU systemmenu=NULL, HWND MainHWND=WindowMain)    {    }    Menu(string caption="&Menu", Menu *submenu=NULL, HWND MainHWND=WindowMain, bool systmenu=false) //WindowMain is then 1st form handle(WHND window) that is created    {    }

eu recebo 1 erro 'ambiguos'. porque nao posso ter 2 construtores?

(porque 2 construtores? 1 para o menu bar e outro para o menu do system)

Link para o comentário
Compartilhar em outros sites

Tenta fazer uma sobrecarga de metodos normal com os métodos construtores. O MinGW que eu utilizo aqui funciona isso normalmente, pode ser alguma limitação do compilador que esteja usando.

o erro é com a string. o meu problema, é para receber, no segundo parametro, 1 HMENU ou Menu*... depende do que quiser aplicar

eu utilizo o Code Blocks com o MinGW,, talvez nao tenha o MinGW actualizado... baixei os 2(IDE e compilador) á parte.

ja vi que o IDE incluido o MinGW, nao deve ter algumas funçoes que uso

Link para o comentário
Compartilhar em outros sites

Você pode tranquilamente ter dois construtores, contanto que eles sejam diferentes.

O problema no teu código, como o próprio erro diz, é que seus dois construtores são ambíguos.

 

Se no seu código você tiver:

Menu("menu", NULL, WindowMain);

 

Como o compilador vai saber se você quer usar o primeiro ou o segundo construtor, já que os parametros são basicamente os mesmos?

 

Eu recomendaria remover os valores default do construtor (ou pelo menos alguns)... não acho uma boa prática de programação. Se precisar de um construtor com valores default, daí é só criar um construtor a mais.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você pode tranquilamente ter dois construtores, contanto que eles sejam diferentes.

O problema no teu código, como o próprio erro diz, é que seus dois construtores são ambíguos.

 

Se no seu código você tiver:

Menu("menu", NULL, WindowMain);

Como o compilador vai saber se você quer usar o primeiro ou o segundo construtor, já que os parametros são basicamente os mesmos?

 

Eu recomendaria remover os valores default do construtor (ou pelo menos alguns)... não acho uma boa prática de programação. Se precisar de um construtor com valores default, daí é só criar um construtor a mais.

muito obrigado pela dica. mas sabes que 1 string, neste caso, pode ter 1 resultado inesperado, mas o parametro obriga a meter 1 valor na string, mesmo que tenha de ser '""' ;)

muito obrigado

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...