Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Sh4dow_Fre4k

[Resolvido] Existe alguma função que retorna o tipo de um Objeto? [Relacionado a Herança C++]

Recommended Posts

Olá pessoal, tudo bem?

Estou com um pequeno probleminha em relação a Herança em C++.

Eu gostaria de me referir ao tipo de um objeto e não consigo usar nada como um typeof(tipo) para fazer funcionar.

Existe em meu programa uma Classe Componente que possui tensões e correntes de envio e leitura. Existem funções de alteração de corrente e tensão e funções de leitura de corrente e tensão.

Existem também várias Classes-filhas de Componente, sendo cada uma delas, componentes do sistema que preciso controlar. Existe por exemplo a classe Catodo, Anodo, Gas, Coletor, Analisador, entre outras. Nessas classes não há funções específicas. Como elas são filhas da classe Componente, estou usando as funções da classe-mãe.

Estou criando um objeto de cada classe-filha e está funcionando normalmente.

--- exemplo ---

Catodo catodo;

Anodo anodo;

Gas gas;

--- fim exemplo ---

Existe uma função dentro da Classe Componente que mostra na tela o estado atual das tensões e correntes do objeto.

--- exemplo ---

void Componente::estadoAtual() {

cout << "Tensão atual é: " << tensaoEnviada << endl;

cout << "Corrente atual é: " << correnteEnviada << endl;

}

--- fim exemplo ---

O problema é que não sei como retornar o tipo do objeto o qual se pede o estadoAtual(). Tentei usar typeof(catodo) mas não retorna nada.

Queria retornar algo do tipo: "A Tensão no catodo é 5 V. A Corrente no anodo é 1 A."

Alguém conhece alguma função que retorne o tipo de uma variavel ou o tipo de um objeto?

Agradeço desde já a atenção,

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu suspeito que o que você quer é o "typeid".

Procure nessa página por typeid, lá no final, tem um exemplo: http://www.cplusplus.com/doc/tutorial/typecasting/

No entanto, acho que o ideal seria você tentar pensar o código de um jeito onde não fosse preciso isso, pois parece o tipo de coisa que pode te dar alguma dor de cabeça mais adiante.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • :) Exatamente o que eu queria!

    Obrigado Lunik!

    ----- exemplo -----

    // typeid, polymorphic class

    #include <iostream>

    #include <typeinfo>

    #include <exception>

    using namespace std;

    class CBase { virtual void f(){} };

    class CDerived : public CBase {};

    int main () {

    try {

    CBase* a = new CBase;

    CBase* b = new CDerived;

    cout << "a is: " << typeid(a).name() << '\n';

    cout << "b is: " << typeid(B).name() << '\n';

    cout << "*a is: " << typeid(*a).name() << '\n';

    cout << "*b is: " << typeid(*B).name() << '\n';

    } catch (exception& e) { cout << "Exception: " << e.what() << endl; }

    return 0;

    }

    ---- fim do exemplo -----

    Resposta abaixo:

    a is: class CBase *

    b is: class CBase *

    *a is: class CBase

    *b is: class CDerived

    Obrigado! :)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×