Ir ao conteúdo
  • Cadastre-se

Passar tipo como parametro


Victordai

Posts recomendados

Mas tipos são parâmetros apenas de templates, ou seja, processados durante a compilação. Eles não existem durante a execução. Funções aceitam apenas objetos (que esses sim existem durante a execução).

 

O que você procura é uma função template do tipo:

template<typename my_type>
int sizeof<my_type>()

 

E a usaria assim:
 

int a = sizeof<int>();

 

Link para o comentário
Compartilhar em outros sites

mas a sintaxe é assim mesmo? func<char>(); ?

 

como o sizeof consegue por o tipo dentro do ()?

 

é que meu professor está pedindo para fazer uma malloc customizado:

 

" endereço malloc2(tipo) → esta função realiza a alocação dinâmica e retorna o endereço da área criada"

 

e o exemplo que ele deu foi:  v = malloc2(int); onde v é um ponteiro para variavel int simples.

Link para o comentário
Compartilhar em outros sites

Ah, é um problema de C então. Nesse caso esqueça a parada do template. Isso aí é C++. xD

 

Bom nesse caso, eu não entendi o problema. Fazem anos que usei C e já esqueci quase tudo. Mas malloc() recebe como parâmetro um numero inteiro (ou seja, do tipo int) de bits pra alocar dinâmicamente na memoria, certo? Mas ele não recebe o tipo int como parâmetro e sim um objeto do tipo int contendo o numero de bits que você gostaria de alocar. Tipo,

int a = 10;
b = malloc(a);

 

Link para o comentário
Compartilhar em outros sites

Sim sim, a malloc normal é assim mesmo, recebe a quantidade de bytes e retorna o endereço alocado.

só que ele pediu para fazer uma malloc2, customizada.

 

essa malloc2 vai usar a malloc normal e contar algumas coisas, por isso a malloc2 precisa saber o tipo, pra passar no sizeof() da malloc normal, saca? Exemplo:

void* malloc2(tipo de variavel)

{

        Contador = Contador + 1;

        return malloc(sizeof(tipo de variavel));

}

 

admita que essa variável "Contador", seja um inteiro global. 


mais ou menos isso. eu preciso passar o tipo como um parametro.

Link para o comentário
Compartilhar em outros sites

Saquei. Bom, nesse caso, não posso ajudar.

 

Continuo pensando que não há maneira de passar apenas um tipo como parâmetro porque eles não existem durante a execução. Nesse caso, tente seguir a ideia do sizeof. Se não me engano sizeof não é uma função real. É uma macro e avalia o tipo no pré-processamento antes mesmo da compilação. Tipo,

 

#define sizeof(my_type) "bla bla bla"

 

Onde "bla bla bla" é a definição da pseudo função sizeof. Em geral macros são escritas em letras maiúsculas, tipo SIZEOF, pra diferencia-las de funções reais. Mas no caso do sizeof, ele é tido até como um operador e dada a importância que tem, ganha a liberdade de ser escrita usando a notação de letras minusculas.

Então nesse caso, dê uma lida a respeito de macros se é a primeira vez que vai usá-las.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!