Erreur compilation - surcharge opérateur
Bonjour à tous.
Je bloque sur qqch qui paraît simplissime, mais je n'arrive pas à trouver la source du problème.
J'essaie tout simplement de surcharger un opérateur + pour un type que j'ai définit.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <iostream>
#include <cassert>
#include <math.h>
typedef unsigned char PixelNB;
typedef double PixelFloat;
inline PixelNB operator*(const PixelNB& pix, double a){
assert(a>=0);
int gris=std::min( static_cast< int >(round(a*pix)) , 255 );
PixelNB pix_res=gris;
return pix_res;
};
int main( int argc, char* argv[] ){
PixelNB pixNB=77;
std::cout << "Hello World !" << std::endl;
} |
A la compilation :
Code:
1 2 3 4
| main.cc:10:16: error: overloaded 'operator*' must have at least one parameter of class or enumeration type
inline PixelNB operator*(const PixelNB& pix, double a){
^
1 error generated. |
Mon compilateur (sous MAC) :
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin12.6.0
Le but pour la suite serait de définir cet opérateur pour d'autre type de pixel et de pouvoir ajouter ceci :
Code:
1 2 3 4 5 6
| inline PixelFloat operator*(const PixelFloat& pix, double a){
return a*pix;
};
template <typename PixelType>
inline PixelType operator*(double a, const PixelType& pix){ return pix*a; }; |
Merci de votre aide.