OVH Cloud OVH Cloud

Question de débutant sur les fichiers en-tête .h

32 réponses
Avatar
Edwin Groulala
Bonjour,

Je débute avec c++. Je voudrais structurer mon programme en fichiers .h
et fichier .cc.

Dans un fichier manipstr.h j'ai déclaré une fonction convertToUpperCase
(string)

Le début de manipstr.h est le suivant:

#include <string>

#ifndef MANIPSTR_H
#define MANIPSTR_H

string convertToUpperCase (string);

#endif

Lors de la compilation, j'obtiens le message suivant:

manipstr.h:6: error: `string' was not declared in this scope

Apparemment la ligne "#include <string>" dans mon fichier manipstr.h n'a
servi à rien...

Comment dois-je faire pour pouvoir déclarer dans manipstr.h des
fonctions utilisant la classe string ? (quelle ligne dois-je écrire dans
mon fichier .h)

Désolé de poser une question aussi basique mais je n'ai pas trouvé la
réponse via google.

Merci d'avance pour votre aide.

Groulala

10 réponses

1 2 3 4
Avatar
drkm
writes:

Gabriel Dos Reis wrote:

Andre Heinen writes:


[...]

| dis "jamais de using dans un .h", je sous-entends "à moins que tu
| ne saches vraiment ce que tu fais, et que dans ton cas précis il
| y ait une bonne raison de faire autrement". Comme c'est un peu

En français, « éviter » se rapproche plus de ça que « jamais
».


En informatique professionnelle, toutes les « guidelines » de
programmation commence par une règle d'or : on peut toujours violer la
règle si c'est justifié. André a présenté une des règles, non les
« guidelines » complètes. Il va de soi pour un professionnel qu'il y
a
d'autres règles. Et que la règle d'or s'y trouve. On ne va pas
s'emmerder avec une verbosité inutile pour des gens qui s'y
connaissent
en génie logicielle.


Mais lorsque je vois « jamais de using dans un .h », je comprends
qu'il ne faut jamais utiliser le mot-clef dans un en-tête. C'est
quand même loin de l'objectif.

Je me disais bien qu'André voulait dire quelque chose d'un peu
différent, mais parceque je connaissais la règle. Ceux qui ne la
connaissaient pas on pu ne pas faire la correction eux-mêmes. Et à
qui est destinée l'énonciation de cette règle si ce n'est à ceux qui
ne la connaissent pas ?

--drkm


Avatar
Andre Heinen
On 8 Dec 2004 00:28:00 -0800, wrote:

Ce que tu as dit, mot-à-mot, c'est « jamais de using dans un .h ».
Or,
je doute que c'est réelement ça tes sentiments. J'imagine que tu
pensais
quelque chose plutôt du genre « jamais un directif de using à la
portée
globale dans un en-tête ».


Effectivement, c'est ça que je voulais dire. La question de
départ, d'Edwin Groulala, était de savoir comment utiliser
std::string dans un en-tête. Fallait-il y mettre un "using
namespace std;" global? Je me limitais à ce contexte-là.

Quelqu'un de constructif aurait signalé que ton énoncée manquait de
précision, et qu'elle disait à la fois plus et moins que ce que tu
voulais dire (parce que pour moi, au moin, l'intention était
évidente,
même si la formulation n'était pas parfaite). En expliquant pourquoi,
évidemment. Mais ben, on est comme on est.


Effectivement, Gaby a eu raison de faire la mise au point. Et
drkm n'a pas tort non plus, quand il nous rappelle que nous
sommes lus aussi par des gens pour qui ce n'est pas clair.

Mais je préfère quand Gaby est constructif tout de suite...
;-)

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz

Avatar
Andre Heinen
On Wed, 08 Dec 2004 10:20:11 +0100, drkm
wrote:

Gaby, pas constructif ?


Mais si:
;-)

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz

Avatar
Andre Heinen
On Tue, 7 Dec 2004 21:38:03 +0100, Erwann ABALEA
wrote:

On Tue, 7 Dec 2004, Andre Heinen wrote:

Contrairement à la grammaire du langage, les règles relatives au
style de programmation ne sont jamais impératives. Lorsque je
dis "jamais de using dans un .h", je sous-entends "à moins que tu
ne saches vraiment ce que tu fais, et que dans ton cas précis il
y ait une bonne raison de faire autrement". Comme c'est un peu
long, je ne l'écris pas tout le temps, d'autant plus que je
pensais que c'était évident.


Un peu comme le SHOULD NOT de la RFC2119 alors?


C'est exactement ce que j'ai voulu dire à propos des directives
using à portée globale dans les en-têtes (et à propos du style de
programmation en général).

Mais, comme d'autres l'ont fait remarquer, dans ce cas-ci, le
problème était que ma formulation manquait de précision.

--
Andre Heinen
My address, rot13-encoded: n qbg urvara ng rhebcrnayvax qbg pbz


Avatar
Gabriel Dos Reis
writes:

| Gabriel Dos Reis wrote:
| > Andre Heinen writes:
|
| [...]
| > | dis "jamais de using dans un .h", je sous-entends "à moins que tu
| > | ne saches vraiment ce que tu fais, et que dans ton cas précis il
| > | y ait une bonne raison de faire autrement". Comme c'est un peu
|
| > En français, « éviter » se rapproche plus de ça que « jamais
| ».
|
| En informatique professionnelle, toutes les « guidelines » de
| programmation commence par une règle d'or : on peut toujours violer la
| règle si c'est justifié. André a présenté une des règles, non les
| « guidelines » complètes. Il va de soi pour un professionnel qu'il y
| a
| d'autres règles. Et que la règle d'or s'y trouve. On ne va pas
| s'emmerder avec une verbosité inutile pour des gens qui s'y
| connaissent
| en génie logicielle.

Lorsque la prétention est à la hauteur de la compétence.

-- Gaby
Avatar
Gabriel Dos Reis
drkm writes:

| writes:
|
| > Gabriel Dos Reis wrote:
|
| >> Andre Heinen writes:
|
| > [...]
|
| >> | dis "jamais de using dans un .h", je sous-entends "à moins que tu
| >> | ne saches vraiment ce que tu fais, et que dans ton cas précis il
| >> | y ait une bonne raison de faire autrement". Comme c'est un peu
|
| >> En français, « éviter » se rapproche plus de ça que « jamais
| > ».
|
| > En informatique professionnelle, toutes les « guidelines » de
| > programmation commence par une règle d'or : on peut toujours violer la
| > règle si c'est justifié. André a présenté une des règles, non les
| > « guidelines » complètes. Il va de soi pour un professionnel qu'il y
| > a
| > d'autres règles. Et que la règle d'or s'y trouve. On ne va pas
| > s'emmerder avec une verbosité inutile pour des gens qui s'y
| > connaissent
| > en génie logicielle.
|
| Mais lorsque je vois « jamais de using dans un .h », je comprends
| qu'il ne faut jamais utiliser le mot-clef dans un en-tête. C'est
| quand même loin de l'objectif.

Ces soit-disant « guidelines » sont en règle générale présentées comme
« éviter » (« avoid ») et non « jamais » (« never ») par ceux qui les
comprenent.

| Je me disais bien qu'André voulait dire quelque chose d'un peu
| différent, mais parceque je connaissais la règle. Ceux qui ne la
| connaissaient pas on pu ne pas faire la correction eux-mêmes. Et à
| qui est destinée l'énonciation de cette règle si ce n'est à ceux qui
| ne la connaissent pas ?

Ceux qui ont lu et compris le thread ont eu une idée de la réponse à
cette question.

Mais le fanatique invoquera probablement « professionnel ».

-- Gaby
Avatar
Gabriel Dos Reis
writes:

| Andre Heinen wrote:
| > On 07 Dec 2004 14:20:48 +0100, Gabriel Dos Reis
| > wrote:
|
| > >Vraiment ?
|
| > Donne-nous donc un exemple, au lieu de poser des énigmes...
|
| Ça ne serait pas Gaby s'il faisait quelque chose qui puisse aider
| quelqu'un, à la place de critiquer.

ôte la poutre de tes yeux avant de...

Et accessoirement, essaie de faire la différence entre « critiquer »
et « poser des questions ».

[...]

| Quelqu'un de constructif aurait signalé que ton énoncée manquait de
| précision, et qu'elle disait à la fois plus et moins que ce que tu

Quelqu'un doté d'une cervelle aurait compris que la question était
constructive, puisque'elle est destinée à amener l'énonciateur de la
règle en question à préciser sa pensée.

-- Gaby
Avatar
drkm
Gabriel Dos Reis writes:

drkm writes:

| Je me disais bien qu'André voulait dire quelque chose d'un peu
| différent, mais parceque je connaissais la règle. Ceux qui ne la
| connaissaient pas on pu ne pas faire la correction eux-mêmes. Et à
| qui est destinée l'énonciation de cette règle si ce n'est à ceux qui
| ne la connaissent pas ?

Ceux qui ont lu et compris le thread ont eu une idée de la réponse à
cette question.

Mais le fanatique invoquera probablement « professionnel ».


Je ne te suis pas, là.

--drkm

Avatar
drkm
Andre Heinen writes:

On Wed, 08 Dec 2004 10:20:11 +0100, drkm
wrote:

Gaby, pas constructif ?


Mais si:
;-)


Je pense qu'il y a quelque chose que je n'ai pas saisi ...

--drkm


Avatar
Andre Heinen
On Fri, 10 Dec 2004 01:35:10 +0100, drkm
wrote:

Andre Heinen writes:

On Wed, 08 Dec 2004 10:20:11 +0100, drkm
wrote:

Gaby, pas constructif ?


Mais si:
;-)


Je pense qu'il y a quelque chose que je n'ai pas saisi ...

--drkm


Je m'étais trompé, et au lieu de poser des énigmes Gaby a tout de
suite indiqué quelle était l'erreur. Personnellement, je préfère
comme ça.

--
André Heinen
Mon e-mail, encodé ROT13: n qbg urvara ng rhebcrnayvax qbg pbz
La FAQ: http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/



1 2 3 4