Histoire de séparer l'implémentation du template de sa définition. Seulement
lors du link, le compilateur essaie aussi de compiler séparément a.cpp ce
qui entraîne évidemment des erreurs de compilation.
Le problème ne se pose pas lorsque j'enlève le fichier a.cpp de la liste des
fichiers du projet mais j'aimerais bien que a.cpp y apparaisse et ne soit
pas compilé. Comment faire ?
Merci pour vos suggestions.
Histoire de séparer l'implémentation du template de sa définition. Seulement lors du link, le compilateur essaie aussi de compiler séparément a.cpp ce qui entraîne évidemment des erreurs de compilation. Le problème ne se pose pas lorsque j'enlève le fichier a.cpp de la liste des fichiers du projet mais j'aimerais bien que a.cpp y apparaisse et ne soit pas compilé. Comment faire ?
Dans les propriétés du projet : sélectionner le fichier et Action : "Ne pas compiler".
PS : bien sûr, le .hpp doit être inclus quelque part.
Arnaud
Godot wrote:
Bonjour,
En écrivant des templates sous visual c++ 6, j'ai procédé de la façon
suivante
Fichier a.hpp :
----------------------------------
template <class T> class A
{
};
Histoire de séparer l'implémentation du template de sa définition.
Seulement lors du link, le compilateur essaie aussi de compiler
séparément a.cpp ce qui entraîne évidemment des erreurs de
compilation.
Le problème ne se pose pas lorsque j'enlève le fichier a.cpp de la
liste des fichiers du projet mais j'aimerais bien que a.cpp y
apparaisse et ne soit pas compilé. Comment faire ?
Dans les propriétés du projet : sélectionner le fichier et Action : "Ne pas
compiler".
PS : bien sûr, le .hpp doit être inclus quelque part.
Histoire de séparer l'implémentation du template de sa définition. Seulement lors du link, le compilateur essaie aussi de compiler séparément a.cpp ce qui entraîne évidemment des erreurs de compilation. Le problème ne se pose pas lorsque j'enlève le fichier a.cpp de la liste des fichiers du projet mais j'aimerais bien que a.cpp y apparaisse et ne soit pas compilé. Comment faire ?
Dans les propriétés du projet : sélectionner le fichier et Action : "Ne pas compiler".
PS : bien sûr, le .hpp doit être inclus quelque part.
Arnaud
Godot
"Arnaud Debaene" a écrit dans le message de news:40988765$0$8649$
| Dans les propriétés du projet : sélectionner le fichier et Action : "Ne pas | compiler".
Bah merci c'est l'info que je cherchais. Décidément, je ne m'y ferai jamais aux IDE.
"Arnaud Debaene" <adebaene@club-internet.fr> a écrit dans le message de
news:40988765$0$8649$626a14ce@news.free.fr...
| Dans les propriétés du projet : sélectionner le fichier et Action : "Ne
pas
| compiler".
Bah merci c'est l'info que je cherchais. Décidément, je ne m'y ferai jamais
aux IDE.
"Arnaud Debaene" a écrit dans le message de news:40988765$0$8649$
| Dans les propriétés du projet : sélectionner le fichier et Action : "Ne pas | compiler".
Bah merci c'est l'info que je cherchais. Décidément, je ne m'y ferai jamais aux IDE.
Cyrille Szymanski
On 2004-05-05, Godot wrote:
Je ne crois pas que l'implantation de template puisse être précompilée et linkée comme des cpp ordinaires.
Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles sont à portée globale) soit directement dans le fichier d'implémentation qui les utilise.
-- cns
On 2004-05-05, Godot <titi@toto.com> wrote:
Je ne crois pas que l'implantation de template puisse être précompilée et
linkée comme des cpp ordinaires.
Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles
sont à portée globale) soit directement dans le fichier
d'implémentation qui les utilise.
Je ne crois pas que l'implantation de template puisse être précompilée et linkée comme des cpp ordinaires.
Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles sont à portée globale) soit directement dans le fichier d'implémentation qui les utilise.
-- cns
Godot
"Cyrille Szymanski" a écrit dans le message de news:4098c804$0$27668$ | On 2004-05-05, Godot wrote: | > Je ne crois pas que l'implantation de template puisse être précompilée et | > linkée comme des cpp ordinaires. | | Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
PS : merci pour le mini cours de c++ mais je pense assez bien connaître le langage...( que j'ai au passage enseigné )
"Cyrille Szymanski" <cns2@cns.invalid> a écrit dans le message de
news:4098c804$0$27668$636a15ce@news.free.fr...
| On 2004-05-05, Godot <titi@toto.com> wrote:
| > Je ne crois pas que l'implantation de template puisse être précompilée
et
| > linkée comme des cpp ordinaires.
|
| Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
PS : merci pour le mini cours de c++ mais je pense assez bien connaître le
langage...( que j'ai au passage enseigné )
"Cyrille Szymanski" a écrit dans le message de news:4098c804$0$27668$ | On 2004-05-05, Godot wrote: | > Je ne crois pas que l'implantation de template puisse être précompilée et | > linkée comme des cpp ordinaires. | | Oui et c'est pour ça qu'on les met soit dans les entêtes (si elles
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
PS : merci pour le mini cours de c++ mais je pense assez bien connaître le langage...( que j'ai au passage enseigné )
Cyrille Szymanski
On 2004-05-05, Godot wrote:
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
Quel est le problème avec le fait de mettre l'implémentation d'une template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre "functions containing for/while are not expanded inline" mais pas les autres)
PS : merci pour le mini cours de c++
De rien.
mais je pense assez bien connaître le langage...( que j'ai au passage enseigné )
PS : Je m'excuse. Faut-il rappeler que ce ng est lu par de nombreux débutants, que ça ne fait pas de mal d'expliciter les choses et enfin que je ne te connais pas plus que tu me connais.
-- cns
On 2004-05-05, Godot <titi@toto.com> wrote:
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
Quel est le problème avec le fait de mettre l'implémentation d'une
template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre
"functions containing for/while are not expanded inline" mais pas les
autres)
PS : merci pour le mini cours de c++
De rien.
mais je pense assez bien connaître le langage...( que j'ai au
passage enseigné )
PS : Je m'excuse. Faut-il rappeler que ce ng est lu par de nombreux
débutants, que ça ne fait pas de mal d'expliciter les choses et enfin
que je ne te connais pas plus que tu me connais.
Au cas où tu n'aurais pas encore compris, c'est ce que je voulais faire.
Quel est le problème avec le fait de mettre l'implémentation d'une template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre "functions containing for/while are not expanded inline" mais pas les autres)
PS : merci pour le mini cours de c++
De rien.
mais je pense assez bien connaître le langage...( que j'ai au passage enseigné )
PS : Je m'excuse. Faut-il rappeler que ce ng est lu par de nombreux débutants, que ça ne fait pas de mal d'expliciter les choses et enfin que je ne te connais pas plus que tu me connais.
-- cns
Godot
"Cyrille Szymanski" a écrit dans le message de news:40991ad4$0$31936$ | On 2004-05-05, Godot wrote: | Quel est le problème avec le fait de mettre l'implémentation d'une | template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre | "functions containing for/while are not expanded inline" mais pas les | autres)
C'est juste une question de goût personnel. Je trouve ainsi que le code est plus lisible et l'utilisateur d'une classe template n'a pas forcément envie d'en voir l'implantation. Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector, string et consort de la STL ( du moins celle de gcc ) pour me dire si tu trouves ça lisible pour un débutant ou même un programmeur qui veut juste savoir quelles méthodes il peut appeler pour telle classe. Ceci dit, la lisibilité du code n'est pas forcément une priorité pour bien des programmeurs.
"Cyrille Szymanski" <cns2@cns.invalid> a écrit dans le message de
news:40991ad4$0$31936$626a14ce@news.free.fr...
| On 2004-05-05, Godot <titi@toto.com> wrote:
| Quel est le problème avec le fait de mettre l'implémentation d'une
| template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre
| "functions containing for/while are not expanded inline" mais pas les
| autres)
C'est juste une question de goût personnel. Je trouve ainsi que le code est
plus lisible et l'utilisateur d'une classe template n'a pas forcément envie
d'en voir l'implantation.
Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector,
string et consort de la STL ( du moins celle de gcc ) pour me dire si tu
trouves ça lisible pour un débutant ou même un programmeur qui veut juste
savoir quelles méthodes il peut appeler pour telle classe.
Ceci dit, la lisibilité du code n'est pas forcément une priorité pour bien
des programmeurs.
"Cyrille Szymanski" a écrit dans le message de news:40991ad4$0$31936$ | On 2004-05-05, Godot wrote: | Quel est le problème avec le fait de mettre l'implémentation d'une | template dans un .hpp ? (Ah si, BCC sort des messages idiots du genre | "functions containing for/while are not expanded inline" mais pas les | autres)
C'est juste une question de goût personnel. Je trouve ainsi que le code est plus lisible et l'utilisateur d'une classe template n'a pas forcément envie d'en voir l'implantation. Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector, string et consort de la STL ( du moins celle de gcc ) pour me dire si tu trouves ça lisible pour un débutant ou même un programmeur qui veut juste savoir quelles méthodes il peut appeler pour telle classe. Ceci dit, la lisibilité du code n'est pas forcément une priorité pour bien des programmeurs.
Cyrille Szymanski
On 2004-05-05, Godot wrote:
| Quel est le problème avec le fait de mettre l'implémentation d'une | template dans un .hpp ?
C'est juste une question de goût personnel. Je trouve ainsi que le code est plus lisible et l'utilisateur d'une classe template n'a pas forcément envie d'en voir l'implantation.
Oui oui, je parlais bien de séparer l'implémentation de la définition, mais dans deux .h différents.
Certains poussent le vice jusqu'à utiliser .h pour les définitions et .hpp pour les implémentations afin de garder le même nom de base. D'autres pré/post-fixent le nom de base.
Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector, string et consort de la STL ( du moins celle de gcc ) pour me dire si tu trouves ça lisible pour un débutant ou même un programmeur qui veut juste savoir quelles méthodes il peut appeler pour telle classe.
Connaissant +/- celle de gcc je suis allé voir celle de la réputé stlport, on est d'accord sur le fait qu'il manque un bon fichier d'interface. Mais celle de sgi est relativement propre. Il me semble que c'est celle qui est dans VC++ (et sur laquelle stlport est basée) ?
-- cns
On 2004-05-05, Godot <titi@toto.com> wrote:
| Quel est le problème avec le fait de mettre l'implémentation d'une
| template dans un .hpp ?
C'est juste une question de goût personnel. Je trouve ainsi que le code est
plus lisible et l'utilisateur d'une classe template n'a pas forcément envie
d'en voir l'implantation.
Oui oui, je parlais bien de séparer l'implémentation de la définition,
mais dans deux .h différents.
Certains poussent le vice jusqu'à utiliser .h pour les définitions et
.hpp pour les implémentations afin de garder le même nom de base.
D'autres pré/post-fixent le nom de base.
Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector,
string et consort de la STL ( du moins celle de gcc ) pour me dire si tu
trouves ça lisible pour un débutant ou même un programmeur qui veut juste
savoir quelles méthodes il peut appeler pour telle classe.
Connaissant +/- celle de gcc je suis allé voir celle de la réputé
stlport, on est d'accord sur le fait qu'il manque un bon fichier
d'interface. Mais celle de sgi est relativement propre. Il me semble
que c'est celle qui est dans VC++ (et sur laquelle stlport est basée) ?
| Quel est le problème avec le fait de mettre l'implémentation d'une | template dans un .hpp ?
C'est juste une question de goût personnel. Je trouve ainsi que le code est plus lisible et l'utilisateur d'une classe template n'a pas forcément envie d'en voir l'implantation.
Oui oui, je parlais bien de séparer l'implémentation de la définition, mais dans deux .h différents.
Certains poussent le vice jusqu'à utiliser .h pour les définitions et .hpp pour les implémentations afin de garder le même nom de base. D'autres pré/post-fixent le nom de base.
Par exemple, tu pourrais essayer de jeter un coup aux fichiers vector, string et consort de la STL ( du moins celle de gcc ) pour me dire si tu trouves ça lisible pour un débutant ou même un programmeur qui veut juste savoir quelles méthodes il peut appeler pour telle classe.
Connaissant +/- celle de gcc je suis allé voir celle de la réputé stlport, on est d'accord sur le fait qu'il manque un bon fichier d'interface. Mais celle de sgi est relativement propre. Il me semble que c'est celle qui est dans VC++ (et sur laquelle stlport est basée) ?