Probleme de compilation C++

Bonjour,
je n'arrive pas a compiler ce programme:

#include <iostream> // classe chaine

#include <conio.h>
using namespace std;
class chaine

{
private:
int longueur; char *adr;

public:

chaine();chaine(char *);chaine(chaine &); //constructeurs

~chaine();

void operator=(chaine &);

int operator==(chaine);

chaine &operator+(chaine);

char &operator[](int);

void affiche();};

chaine::chaine(){longueur = 0;adr = new char[1];} //constructeur1

chaine::chaine(char *texte) // constructeur2

{int i;

for(i=0;texte[i]!='\0';i++);

longueur = i;

adr = new char[longueur+1];

for(i=0;i!=(longueur+1);i++) adr[i] = texte[i];}

void chaine::operator=(chaine &ch)

{ delete adr;

longueur = ch.longueur;

adr = new char[ch.longueur+1];

for(int i=0;i!=(longueur+1);i++)adr[i] = ch.adr[i];

}

int chaine::operator==(chaine ch)

{int i,res=1;

for(i=0;(i!=(longueur+1))&&(res!=0);i++)if(adr[i]!=ch.adr[i])res=0;

return res;}

chaine &chaine::operator+(chaine ch)

{int i;static chaine res;

res.longueur = longueur + ch.longueur;

res.adr = new char[res.longueur+1];

for(i=0;i!=longueur;i++) res.adr[i] = adr[i];

for(i=0;i!=ch.longueur;i++)res.adr[i+longueur] = ch.adr[i];

res.adr[res.longueur]='\0';

return(res);}

char &chaine::operator[](int i)

{static char res='\0';

if(longueur!=0) res = *(adr+i);

return res;}

chaine::~chaine(){delete adr;}

void chaine::affiche()

{int i;

for(i=0;i!=longueur;i++)cout<<adr[i];

cout<<"\n";}

void main(){

chaine a("Bonjour "),b("Maria"),c,d("Bonjour "),e;
if(a==b)cout<<"Gagne !\n";else cout<<"Perdu !\n";

if(a==d)cout<<"Gagne !\n";else cout<<"Perdu !\n";

cout<<"a: ";a.affiche();

cout<<"b: ";b.affiche();

cout<<"d: ";d.affiche();

c = a+b;

cout<<"c: ";c.affiche();

for(int i=0;c[i]!='\0';i++)cout<<c[i];

getch();}

quand je compile sur devc++ ca me met qu'il y a une erreur a la fin a void main() ca me marque must return int
je ne compren pas comment faire pour ke ca marche si qq pouvai m'aider
merci
Configuration: Windows Vista
Internet Explorer 7.0

7 réponses

  1. Tu essayes de compiler du C++.

    La fonction main doit être de type int.

    Ca donne :

    int main(int argc, char *argv[])
    {
    ... le code ici...
    return 0;
    }
    1. mais il faut ke j'y mette ou tu peu me le remplacer sur mon programme stp
      parce ke tu voi la ou c fau c la seul partdonnée par l'exercice lol
      1. Ca donnerai ça :

        #include <iostream> // classe chaine

        #include <conio.h>
        using namespace std;
        class chaine

        {
        private:
        int longueur; char *adr;

        public:

        chaine();chaine(char *);chaine(chaine &); //constructeurs

        ~chaine();

        void operator=(chaine &);

        int operator==(chaine);

        chaine &operator+(chaine);

        char &operator[](int);

        void affiche();};

        chaine::chaine(){longueur = 0;adr = new char[1];} //constructeur1

        chaine::chaine(char *texte) // constructeur2

        {int i;

        for(i=0;texte[i]!='\0';i++);

        longueur = i;

        adr = new char[longueur+1];

        for(i=0;i!=(longueur+1);i++) adr[i] = texte[i];}

        void chaine::operator=(chaine &ch)

        { delete adr;

        longueur = ch.longueur;

        adr = new char[ch.longueur+1];

        for(int i=0;i!=(longueur+1);i++)adr[i] = ch.adr[i];

        }

        int chaine::operator==(chaine ch)

        {int i,res=1;

        for(i=0;(i!=(longueur+1))&&(res!=0);i++)if(adr[i]!=ch.adr[i])res=0;

        return res;}

        chaine &chaine::operator+(chaine ch)

        {int i;static chaine res;

        res.longueur = longueur + ch.longueur;

        res.adr = new char[res.longueur+1];

        for(i=0;i!=longueur;i++) res.adr[i] = adr[i];

        for(i=0;i!=ch.longueur;i++)res.adr[i+longueur] = ch.adr[i];

        res.adr[res.longueur]='\0';

        return(res);}

        char &chaine::operator[](int i)

        {static char res='\0';

        if(longueur!=0) res = *(adr+i);

        return res;}

        chaine::~chaine(){delete adr;}

        void chaine::affiche()

        {int i;

        for(i=0;i!=longueur;i++)cout<<adr[i];

        cout<<"\n";}

        int main(int argc, char *argv[])
        {

        chaine a("Bonjour "),b("Maria"),c,d("Bonjour "),e;
        if(a==b)cout<<"Gagne !\n";else cout<<"Perdu !\n";

        if(a==d)cout<<"Gagne !\n";else cout<<"Perdu !\n";

        cout<<"a: ";a.affiche();

        cout<<"b: ";b.affiche();

        cout<<"d: ";d.affiche();

        c = a+b;

        cout<<"c: ";c.affiche();

        for(int i=0;c[i]!='\0';i++)cout<<c[i];

        getch();

        return 0;
        }
        1. ok merci
          tu l'a essayer le programme moi ca me met un truc bizar ca me met perdu apres ca bug
          1. Non j'ai pas compilateur sous la main.

            Après j'ai pas assez de temps pour tout regarder mais essayes un peu ça a pas l'air très complexe.

            D'après ce que j'ai vu, ça implémente une classe pour gérer les chaines... 9a devrait t'afficher Perdu et Gagne au début et d'autres trucs après.
            1. ouai c'est aiment complexe je trouve car j'ai trouver des explication un peu partt sur le net mais je f du c++depuis moin de deux moi et je devrai savoir faire ca c qd mm cho pour mon niveau non?