[c++] probleme de class

Résolu/Fermé
Superbeaugosse Messages postés 25 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 6 mars 2009 - 6 mars 2009 à 15:24
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 mars 2009 à 16:49
Bonjour,

je suis en train de coder une classe et j ai une erreur que je n arrive vraiment pas a comprendre... Pourriez vous m aider svp ?

mon .h:

#ifndef SWAP.H
#define SWAP.H
#include <gllib/Vec2.h>
using namespace std;

class Swap{

private :
Vec2i mP1;
Vec2i mP2;

public :
Swap (Vec2i p1, Vec2i p2); // constructeur de mP1 et mP2
};

mon .cpp :

#include "Swap.h"
#include "cstdlib"

Swap :: Swap (Vec2i p1, Vec2i p2): // constructeur de mP1 et mP2
mP1[0]=p1[0],
mP1[1]=p1[1],
mP2[0]=p2[0],
mP2[1]=p2[1]
{}

il y a d autre trucs mais l erreur est a la ligne "mP1[0]=p1[0],", la librairie Vec2.h definit le type Vec2i qui est un vecteur a deux composantes.

l erreur :

5|error: expected `(' before '[' token|
5|error: expected `{' before '[' token|
5|error: expected unqualified-id before '[' token|

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 mars 2009 à 15:43
C'est une erreur dans l'assignation des variable.
Dans un constructeur, si par exemple tu as une classe A ayant pour membre a b et c :
A::A(type_a vala,type_b valb,type_c valc):a(vala),b(valb),c(valc){};
Voilà.
0
Superbeaugosse Messages postés 25 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 6 mars 2009
6 mars 2009 à 15:49
donc je devrais l ecrire comme ca ? :
mP1[0](p1[0]),
mP1[1](p1[1]),
mP2[0](p2[0]),
mP2[1](p2[1])

c est bete mais ca marche pas =(
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 mars 2009 à 16:49
C'est vrai ce serai a priori plus propre.
par contre, ta variable c'est mP1 et non mP1[0].
donc, soit tu peut faire "mP1(p1)" soit il faut assigner différemment.
Il faut que tu vois que comme mP1 est une classe, écrire mP1 implique l'appel d'une fonction membre (mP1.operator[](0)). Pour initialiser une variable ainsi il faut le faire en une fois
0