Ir ao conteúdo

Posts recomendados

Postado

em alguns casos usamos o 'auto' por não saber o tipo exacto... mas eu tenho 1 caso especifico e só queria usar outro nome em vez do 'auto'.
sim posso usar uma macro... mas demasiados programadores querem que evitamos de usar macros... em alguns casos entendo, mas noutros nos ajuda e muito mesmo.

porque não posso usar o 'auto' com o 'typedef'?

  • Curtir 1
Postado

Bom Dia @Cambalinho

 

24 minutos atrás, Cambalinho disse:

porque não posso usar o 'auto' com o 'typedef'?

Sem delongas: atente que ambas são palavras reservadas.

 

A primeira (auto) necessita de um inicializador para definir o tipo da variável automaticamente, ou seja, auto não é um tipo de dados, porém sim uma palavra que solicita que pela inicialização o tipo da variável será definido.

 

A segunda (typedef)  "É usado para criar um nome alternativo para outro tipo de dados", ou seja, ela necessita de um tipo (e auto não é um tipo de dados) para definir um outro nome, um alias para simplificar e torna mais literal.

 

Entendeu?

 

  • Curtir 1
  • Amei 1
Postado
6 minutos atrás, Cambalinho disse:

mas o 'auto' aceita qualquer tipo de dados sim... só queria era ter oportunidade de ter outro nome\sinónimo disponível, mas  para isso uso 1 macro para facilitar

Você ainda não entendeu!

 

A palavra reservada auto não é um tipo de dado! Repito, ela solicita que o tipo será definido na inicialização, tanto que inicializar é obrigatório.

 

6 minutos atrás, Cambalinho disse:

só queria era ter oportunidade de ter outro nome\sinónimo disponível

Não será possível com auto e typedef porque typedef opera apenas com tipo de dados. Isso já está provado por você mesmo tanto que veio aqui em busca de explicação do porque não funciona.

  • Curtir 1
  • Amei 1
Postado
4 minutos atrás, Cambalinho disse:

vendo bem, o 'auto' pode ser 1 espécie de macro, porque precisa de 1 inicialização para saber que tipo é... certo?

Agora tenho certeza que entendeu! Isso mesmo o tipo será deduzido a partir da inicialização: CORRETO.

  • Curtir 1
  • Amei 1
Postado
3 minutos atrás, Cambalinho disse:

posso imprimir o tipo de dados de 1 variável 'auto'?

Acho que não entendi direito! imprimir o tipo de dados, algo como imprimir se ele é int, char ... Ou seu conteúdo/valor?

  • Curtir 1
Postado
agora, Cambalinho disse:

sim

Claro que pode! O seu valor pode ser impresso usando as métodos padrões sem problema conhecido.

 

Já enquanto o nome do tipo definido automaticamente isso não sei como é possível, mas que é possível também é. Porém já que a definição depende de uma atribuição/inicialização faz pouco sentido ter dúvidas quanto ao tipo.

  • Curtir 2
Postado

boa

#include <iostream>

//for the type_name():
#include <type_traits>
#include <typeinfo>
#ifndef _MSC_VER
#   include <cxxabi.h>
#endif
#include <memory>
#include <string>
#include <cstdlib>

template <class T>
std::string
type_name()
{
    typedef typename std::remove_reference<T>::type TR;
    std::unique_ptr<char, void(*)(void*)> own
           (
#ifndef _MSC_VER
                abi::__cxa_demangle(typeid(TR).name(), nullptr,
                                           nullptr, nullptr),
#else
                nullptr,
#endif
                std::free
           );
    std::string r = own != nullptr ? own.get() : typeid(TR).name();
    if (std::is_const<TR>::value)
        r += " const";
    if (std::is_volatile<TR>::value)
        r += " volatile";
    if (std::is_lvalue_reference<T>::value)
        r += "&";
    else if (std::is_rvalue_reference<T>::value)
        r += "&&";
    return r;
}
  
//used:
int main()
{
    auto ci = 0;
    std::cout << type_name<decltype(ci)>()<< '\n';

    return 0;
}
  
//output:
int

e está certo mesmo... se usar o 'const int' em vez do 'auto', iremos ter o 'const int'.

este código foi testado no site: https://www.onlinegdb.com/online_c++_compiler
penso que é  compatível com GCC.
muito obrigado

  • Curtir 1
  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!