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: error C2593: 'operator +' is ambiguous


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Points : 45
    Points
    45
    Par défaut Problème: error C2593: 'operator +' is ambiguous
    Bonjour,

    J'essaye de compiler un fichier avec Visual Studio 2005 et j'ai l'erreur suivante quand je compild mon code:

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    error C2593: 'operator +' is ambiguous
       could be 'built-in C++ operator+(int, short)'
    1>        or       'built-in C++ operator+(int, int)'
    1>        or       'built-in C++ operator+(int, bool)'
    1>        or       'built-in C++ operator+(int, float)'
    1>        or       'built-in C++ operator+(int, double)'
    1>        while trying to match the argument list '(int, itpp::bin)'

    voici mon code. J'ai mis mon erreur en gras.

    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
    #include "conv_code_delay.hpp"
    #include <itpp/itcomm.h>
    #include <math.h>
    
    
    namespace itpp
    {
    
    ...
    
    
    bvec Convolutional_Code_derived::sdvd(cvec deinterleaved_symbol,int g[2][K], float es_ovr_n0, long channel_length)
    {
    	int *decoder_output_matrix;
        int i, j, l, ll;                          /* loop variables */
        long t;                                   /* time */
        int memory_contents[K];                   /* input + conv. encoder sr */
        int input[TWOTOTHEM][TWOTOTHEM];          /* maps current/nxt sts to input */
        int output[TWOTOTHEM][2];                 /* gives conv. encoder output */
        int nextstate[TWOTOTHEM][2];              /* for current st, gives nxt given input */
        int accum_err_metric[TWOTOTHEM][2];       /* accumulated error metrics */
        int state_history[TWOTOTHEM][K * 5 + 1];  /* state history table */
        int state_sequence[K * 5 + 1];            /* state sequence list */
     
        int *channel_output_matrix;               /* ptr to input matrix */
    
        int binary_output[2];                     /* vector to store binary enc output */
        int branch_output[2];                     /* vector to store trial enc output */
     
        int m, n, number_of_states, depth_of_trellis, step, branch_metric,
            sh_ptr, sh_col, x, xx, h, hh, next_state, last_stop; /* misc variables */
    .....
    
    
      branch_metric += branch_metric + abs( *( channel_output_matrix +
                        ( 0 * channel_length + t ) ) - 7 * binary_output[0] ) +
                                                    abs( *( channel_output_matrix +
                        ( 1 * channel_length + t ) ) - 7 * binary_output[1] );
    
    
    ...
    
    }
    Merci,

    Somaa

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Je ne sais pas ce qu'est un itpp::bin, mais il doit avoir un opérateur de conversion vers int, double, bool, ...

    Du coup, le compilateur ne sait pas lequel choisir.

    Caste explicitement l'opérande de droite du plus en int, et tu lèveras l'ambiguité.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    effectivement , ca résoud le problème en faisant un cast explicite ((int) devant)

    Merci,
    Somaa

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

Discussions similaires

  1. Problème Error Timeout
    Par TobTob dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/11/2007, 08h43
  2. Problème Error LNK2001
    Par manukubs42 dans le forum C++
    Réponses: 3
    Dernier message: 16/10/2007, 11h39
  3. Réponses: 5
    Dernier message: 13/07/2007, 14h51
  4. Réponses: 2
    Dernier message: 15/11/2005, 10h59

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