OVH Cloud OVH Cloud

debutant en c++

5 réponses
Avatar
jjabon
bonjour, je suis enrtrain d'apprendre le c++, et j'ia ici un exo que
j'essaie de faire. j'essaie d'apprndre les type de donnée abstrait et la
manipulation d'objet

polynome.h
-----------------------------------------------------------------------------------------
#include <iostream>
using namespace std;

class Polynome
{
//interface
public:
Polynome(int* );
void affiche();
private:
int mono, expo;
int* A;
}

Polynome::Polynome(int* T)
{
int* A =T;
}

void Polynome::affiche()
{
for(int i=0; i<DEGRE;i++)
cout <<A[i]<<"x^"<<i<<" ";
}
--------------------------------------------------------------------------------------------
le main

const int DEGRE =10 //nombre de case dans le tableau( ce qui represente
le plus grand degré)
#include<iostream>
#include"Polynome.h"
using namespace std;

main()
{
int A[DEGRE] = {1,25,8,6};
int B[DEGRE] = {5,5,8,6,0,65,8};

Polynome P(A);
P.affiche();
cout<<endl;
Polynome Q(B);
Q.affiche();
}

or le compil me met ca comme erreur

Polynome.h:16: error: ISO C++ forbids defining types within return type
Polynome.h:16: error: return type specification for constructor invalid


en fait, j'essaie de mettre un tableau dans un objet, et je creer une
fonction pour l'afficher mais bon, c'est pas trop ca, un peu d'aide,ca
serait sympa
merci

a++

5 réponses

Avatar
elekis
jjabon wrote:
bonjour, je suis enrtrain d'apprendre le c++, et j'ia ici un exo que
j'essaie de faire. j'essaie d'apprndre les type de donnée abstrait et la
manipulation d'objet

polynome.h
-----------------------------------------------------------------------------------------

#include <iostream>
using namespace std;

class Polynome
{
//interface
public:
Polynome(int* );
void affiche();
private:
int mono, expo;
int* A;
}

Polynome::Polynome(int* T)
{
int* A =T;
}

void Polynome::affiche()
{
for(int i=0; i<DEGRE;i++)
cout <<A[i]<<"x^"<<i<<" ";
}
--------------------------------------------------------------------------------------------

le main

const int DEGRE  //nombre de case dans le tableau( ce qui represente
le plus grand degré)
#include<iostream>
#include"Polynome.h"
using namespace std;

main()
{
int A[DEGRE] = {1,25,8,6};
int B[DEGRE] = {5,5,8,6,0,65,8};

Polynome P(A);
P.affiche();
cout<<endl;
Polynome Q(B);
Q.affiche();
}

or le compil me met ca comme erreur

Polynome.h:16: error: ISO C++ forbids defining types within return type
Polynome.h:16: error: return type specification for constructor invalid


en fait, j'essaie de mettre un tableau dans un objet, et je creer une
fonction pour l'afficher mais bon, c'est pas trop ca, un peu d'aide,ca
serait sympa
merci

a++
j'ai trouver , merci


a+++

Avatar
Gourgouilloult

[Argh, le fourbe cite tout son message !]


j'ai trouver , merci


Et tu as trouvé quoi, au juste ? Je veux bien partager les problèmes,
mais je veux bien partager aussi les soluces ;)

Alors t'as compris quoi ? Qu'il faut un ';' après "const int DEGRE =
10", ou que le "int* A" doit être remplacé par "A" ? Mais aucun des deux
n'explique ton erreur de compil, puisqu'elle vient du ';' qui manque en
fin de définition de la classe. (Le double avantage de cette erreur,
c'est que tout le monde l'a faite, et qu'on ne la fait qu'une fois ;) A
côté de ça, es-tu conscient que tes tableaux ne sont pas effectivement
recopiés dans P et Q ?

Une dernière petite chose encore, quand même. Je ne veux pas t'encombrer
avec des questions de conception, mais celle-là me gêne un peu. Si tu
prends le .h isolément du «fichier main», DEGRE n'a plus d'existence.
Donc il serait quand même préférable d'en rajouter une déclaration
anticipée (ie extern) avant de définir Polynome::affiche().

Bon, encore un et après, promis, j'arrête ;)
La fonction main(), pour être bien c++, doit renvoyer un int. Il
faudrait remplacer "main()" par "int main()" (le return est facultatif).

Gourgou
Bon, là, j'ai partagé que les soluces, et pas les explications, tu me
diras... Bonne digestion, donc ;)

Avatar
Gourgouilloult

faut simplement faire g++ -o aulieu de gcc
c'est ce quon m'a dit, et ca fonctionne


Huh ?? Pas clair.

Et le code de ton premier post compile ?!

Gourgou
(Qui a compris qu'il vaut mieux faire des réponses courtes ;-P )

Avatar
elekis
Gourgouilloult wrote:


[Argh, le fourbe cite tout son message !]



j'ai trouver , merci



Et tu as trouvé quoi, au juste ? Je veux bien partager les problèmes,
mais je veux bien partager aussi les soluces ;)

Alors t'as compris quoi ? Qu'il faut un ';' après "const int DEGRE =
10", ou que le "int* A" doit être remplacé par "A" ? Mais aucun des deux
n'explique ton erreur de compil, puisqu'elle vient du ';' qui manque en
fin de définition de la classe. (Le double avantage de cette erreur,
c'est que tout le monde l'a faite, et qu'on ne la fait qu'une fois ;) A
côté de ça, es-tu conscient que tes tableaux ne sont pas effectivement
recopiés dans P et Q ?

Une dernière petite chose encore, quand même. Je ne veux pas t'encombrer
avec des questions de conception, mais celle-là me gêne un peu. Si tu
prends le .h isolément du «fichier main», DEGRE n'a plus d'existence.
Donc il serait quand même préférable d'en rajouter une déclaration
anticipée (ie extern) avant de définir Polynome::affiche().

Bon, encore un et après, promis, j'arrête ;)
La fonction main(), pour être bien c++, doit renvoyer un int. Il
faudrait remplacer "main()" par "int main()" (le return est facultatif).

Gourgou
Bon, là, j'ai partagé que les soluces, et pas les explications, tu me
diras... Bonne digestion, donc ;)

faut simplement faire g++ -o aulieu de gcc

c'est ce quon m'a dit, et ca fonctionne


Avatar
elekis
Gourgouilloult wrote:


faut simplement faire g++ -o aulieu de gcc
c'est ce quon m'a dit, et ca fonctionne



Huh ?? Pas clair.

Et le code de ton premier post compile ?!

Gourgou
(Qui a compris qu'il vaut mieux faire des réponses courtes ;-P )

j'ai jamaizs dit qu'il y avaiit pas d'erreur, mais il ne me mettait pas

les lignes, car il me manquait des librairies, donc, j'ai faitcomme me
l'a dit un pote, un apt-get install, et tout est rentrer dans l'ordre.