IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème avec des cast


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut problème avec des cast
    Quand je lance le code suivant;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <fftw3.h>
    #include <stdlib.h>
     
    #define N 1024
    #define DEMI_PER 16
    #define AMPLITUDE 5
     
    void show_signal(double * in, unsigned long size)
    {
      unsigned long i;
     
      for( i = 0 ; i < size ; i++ )
        {
          fprintf(stdout," %f \n",in[i] );
        }
    }
     
    void show_fftw_complex(fftw_complex * in, unsigned long size)
    {
      unsigned long i;
     
      for( i = 0 ; i < size ; i++ )
        {
          fprintf(stdout,"%f \n",in[i][0]);
        }
    }
     
    int main ( int argc, char **argv)
    {
      double *in;
      unsigned long i,j = 0;
      fftw_complex * out;
      fftw_plan p;
     
      in = malloc( N * sizeof(double));
      out = fftw_malloc( N * sizeof(fftw_complex));
     
      /* Initialisation du plan de calcul pour la fft */
      p = fftw_plan_dft_r2c_1d(N,in,out,FFTW_ESTIMATE);
     
      /* Création d'un signal pseudo rectangle */
      for( i = 0 ; i < N ; i++)
        {
          if( i % DEMI_PER == 0 )
    	{
    	  if ( j == AMPLITUDE )
    	    j = 0;
    	  else
    	    j = AMPLITUDE;
    	}
          in[i] = j;
        }
     
      /* Affiche le signal d'entrée */
      show_signal(in,N);
     
      /* Calcule la fft */
      fftw_execute(p);
     
      /* Affiche la TF du signal d'entrée */
      show_fftw_complex(out,N/2);
     
      fftw_destroy_plan(p);
      free(in);
      fftw_free(out);
     
      return EXIT_SUCCESS;
     
    }

    j'ai un message d'erreur, qui est :
    >.\MAIN.CPP(36) : error C2440: '=' : cannot convert from 'void *' to 'double *'
    1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    1>.\MAIN.CPP(37) : error C2440: '=' : cannot convert from 'void *' to 'fftw_complex (*)'
    Qu'est ce que cela signifie et comment résoudre.
    merci.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Alors pour commencer, ce que tu écris, c'est du C, pas du C++.
    Ensuite, en lisant bien l'erreur, tu essaies de transformer un void* en double*, ce qui est interdit par défaut - tout bon livre de C++ l'indique -.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    On résout avec un reinterpret_cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fftw_complex * out = reinterpret_cast<fftw_complex *>(fftw_malloc( N * sizeof(fftw_complex)));

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    C l'autorise, néanmoins.
    Puisque ton code est du C, utilise un compilateur C.

    Et il n'y a pas besoin d'un reinterpret_cast, un static_cast suffit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec des transaction
    Par Oluha dans le forum ASP
    Réponses: 16
    Dernier message: 01/03/2005, 15h40
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo