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;
    }
    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
      0
      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;
        }
        0
        1. ok merci
          tu l'a essayer le programme moi ca me met un truc bizar ca me met perdu apres ca bug
          0
          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.
            0
            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?
              0
              1. Je me rends pas compte...

                ba accroche toi :-)
                0