begin process at 2012 02 10 20:03:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

color32 operator = (color32 A,int X) must be a non-static


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

color32 operator = (color32 A,int X) must be a non-static

dimanche 29 mai 2005 à 12:01:06 | color32 operator = (color32 A,int X) must be a non-static

anykey

Salut a tous, j'ai un soucis avec les operator c++

    color32 operator = (color32 A,int X)
    {
        color32 ret;
        ret.value32=X;
        return ret;
    }

Il ne veut pas compiler, pretextant que
"color32 operator = (color32 A,int X) must be a non-static"

Et euuh comment dire, la notion de static non static je connais pas trop en c++!
Merci d'avance pour votre aide!

dimanche 29 mai 2005 à 13:55:49 | Re : color32 operator = (color32 A,int X) must be a non-static

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Un fonction statique est une fonction qui ne s'applique pas à un objet particulier (cela implique qu'il n'y a pas de ptr this dans ces méthodes).
Normalement ca devrait ressembler à ca:
color32& color32::operator=(const color32& clr)
{
  if(&clr != this) // le même objet, on ne fait rien
  {
    value32 = clr.value32;
  }
  return *this;
}
ici this représente ce qu'il y a à gauche du =

dimanche 29 mai 2005 à 14:10:03 | Re : color32 operator = (color32 A,int X) must be a non-static

anykey


ok merci :)

Bon c'etait pas une classe parcontre, j'ai donc du virer color32:: mais j'ai compris le probleme ^_^
dimanche 29 mai 2005 à 15:53:14 | Re : color32 operator = (color32 A,int X) must be a non-static

vecchio56

Administrateur CodeS-SourceS
C'est quoi alors si c'est pas une classe?
dimanche 29 mai 2005 à 21:55:15 | Re : color32 operator = (color32 A,int X) must be a non-static

anykey

Héhé structure union, je pensé pas qu'on pouvais tout betement faire struct1 = struct2... pour les unions :-)

Je debute, et ça se voit! :-)

Finalement mon probleme n'etait pas ^_^
Mais je retient ton code pour les classes!

anKh.
lundi 30 mai 2005 à 09:44:32 | Re : color32 operator = (color32 A,int X) must be a non-static

TeLeTUbIz

Membre Club

De plus la surcharge d'opérateurs doit respecter une certaine signature et une certaine sémantique.
Bon pour l'aspect sémantique (= sens à comprendre) on s'en balance un peu, le compilo n'y verra que du feu, mais le code sera très chelou.
Par contre pour la signature, faut respecter ca:
Objet& Objet::operator=(const Objet&);
ie: Objet en retour, Objet appelant, Obnjet en affectation      // cas où on est dans une classe / struct / union
sinon Objet operator=(Objet, Objet);      Si on est hors d'une classe.

Je veux dire qu'on a pas le droit d'affecter un "objet virgule un int" à un "objet".


lundi 30 mai 2005 à 10:55:04 | Re : color32 operator = (color32 A,int X) must be a non-static

vecchio56

Administrateur CodeS-SourceS
Et a quoi peut bien servir un operator= s'il ne fait pas partie d'une classe? Tu as un exemple?
lundi 30 mai 2005 à 15:14:55 | Re : color32 operator = (color32 A,int X) must be a non-static

TeLeTUbIz

Membre Club

Bon, toutes mes excuses, les opérateurs =, [], () et -> doivent obligatoirement appartenir à une classe ou être amis (friend) avec.

Bon sinon définir un opérateur en dehors d'une classe a qd même son utilité.

lundi 30 mai 2005 à 15:28:13 | Re : color32 operator = (color32 A,int X) must be a non-static

vecchio56

Administrateur CodeS-SourceS
Oui même ca ca m'intéresse, parce que ve vois pas comment on peut définir un opérateur en dehors d'une classe, puisque pour l'opérateur T, a T b signifie a.T(b)
lundi 30 mai 2005 à 15:47:07 | Re : color32 operator = (color32 A,int X) must be a non-static

TeLeTUbIz

Membre Club

oui, mais regarde, pour cout par exemple (qui est un ostream)
on surcharge << en dehors de la classe ostream (sinon il faudrait changer le code à chaque fois)
exemple pour les complexes:

struct Complexe {
   float real;
   float img;
};


ostream& operator<<(ostream& os, Complexe a) {
   os << a.real << " + " << a.img << "i";
   return os;
}


Ensuite tu peux utiliser l'opération "<< a" où a est un complexe aussi bien sur des flux de fichiers (ofstream qui dérive de ostream) que sur des ostream (cout et err les seuls me semble-t-il).
cout << a << endl;

Voilà, ca permet d'étendre les fonctionnalités sans retaper la classe ni dériver.


1 2

Cette discussion est classée dans : int, static, must, operator, color32


Répondre à ce message

Sujets en rapport avec ce message

Probleme non compris en chargant un fichier !!! [ par SnOOpss ] Bonjour tout le monde, voila mon probleme :int loadtablo(){static int i = 1;char caractere;FILE *fichier; // Déclare le fichierfichier = fopen("tablea Overload "[ ]" [ par xenetrix ] //est-ce qu'une personne peut m'assurer la réponse à cette question? //je n'ai pas de compilateur à ma disposition Class Sanity has the structure Fonction déclaré en static [ par crocejf2000 ] Quel est la différence entre une fonction déclaré comme suit :int NomClasse::Nomfonctrion(int j){blabla}et une fonction déclaré en static :static int fonctions en static [ par Xentor609 ] Salut,juste une petite question toute bête, mais quelqu'un pourraitm'expliquer exactement quel est l'interet de declarer une fonction en static (ex: s probleme de static variable [ par Bason_sensei ] Bonjour, voila mon pbl : j'ai une classe user et je je veut le nombre de user. j'ai donc créer un varaible static nbUsers // User.h class User{     Prob avec "!" [ par saturne_1606 ] Bonjour a tous!Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si Créer un classe de matrice [ par kazeton ] Bonjour à tous,Je débute en c++ et je voudrais réaliser un classe de matrice.On m'a donné le .h et on m'a demandé de réaliser un .cc afin de définir t VC++ 6 /recompilé sur VC++ 2005 [ par lui88 ] Bonjour , j'essai de recompilé mon programme sur VC++ 2005 , mais plein d'erreur s'affiche :s. j'en est reglé une grande partie mais là je n'y arrive classe matrice [ par pabreto ] bonjour!je dois écrire le matrice.c d'une classe de matrice à partir d'un matrice.h que l'on me donne et que je n'a pas le droit de modifier.voici mes POO: classe et heritage [ par eishtein ] bonjour les gars; Bon voilà, j'ai les deux classes suivantes: [code=cpp] class fraction { public: fraction(int=0,int=1);


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales