Bonjour à tous,
J'ai réalisé il y a quelques mois le programme suivant, qui compile et s'éxécute très bien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include "vigra/stdimage.hxx"
#include "vigra/labelimage.hxx"
#include "vigra/impex.hxx"
#include "CImg.h"
 
 
// Conversion d'une image CImg vers une image Vigra
vigra::IImage conversionCImgVigra (cimg_library::CImg <unsigned short>& image)
{
        // CODE}
 
cimg_library::CImg <unsigned short> conversionVigraCImg (vigra::IImage temp)
{
        //CODE
}
 
int main()
{  
 
	cimg_library::CImg <unsigned short> image ("lpt.bmp");
	image.channel(0).display();
 
	vigra::IImage src;
	vigra::IImage labels(image.dimx(), image.dimy()); // image labelisée (sortie)
 
	src = conversionCImgVigra(image);
 
	vigra::labelImageWithBackground(srcImageRange(src), destImage(labels), false, 0);
 
	cimg_library::CImg <unsigned short> image_display = conversionVigraCImg(labels);
	image_display.display("image labellisée");
 
	return (0);
}
Le problème, c'est que je souhaiterai le réutiliser dans ma classe LPT de mon nouveau projet:

lpt.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "CImg.h"
#include <iostream>
#include <string>
 
#include "cfp.h"
 
class LPT : public CFP
{
public:
	LPT(Choc & c, std::string nom_cfp);
	virtual ~LPT();
 
	virtual void setImageReferenceIR();
	virtual void setImageReferenceIR(cimg_library::CImg <unsigned short> );
 
	void labellise();
 
protected:
	cimg_library::CImg<unsigned short> image_labellise;
};
 
#endif
J'ai des tonnes d'erreur dès que j'inclue ces en-têtes de malheur:
#include "vigra/stdimage.hxx"
#include "vigra/labelimage.hxx"
#include "vigra/impex.hxx"


C'est le même genre d'erreur que j'avais eu auparavant, ce qui me fait penser à des inclusions cycliques.
Le problème viendrait t-il des templates?

Comme dit dans la FAQ, j'ai recoder ce qui m'intéresse dans un .h:

outils.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef OUTILS_H
#define OUTILS_H
 
#include <fstream>
#include <string>
 
#include "vigra/stdimage.hxx"
#include "vigra/labelimage.hxx"
#include "vigra/impex.hxx"
 
#include "CImg.h"
 
bool is_readable( const std::string & file ) 
{ 
    std::ifstream fichier( file.c_str() ); 
    return fichier != 0; 
} 
 
// Conversion d'une image CImg vers une image Vigra
vigra::IImage conversionCImgVigra (cimg_library::CImg <unsigned short>& image) 
{
 
   //CODE
}
 
cimg_library::CImg <unsigned short> conversionVigraCImg (vigra::IImage &temp) 
{
        //CODE
 }
 
#endif
Et j'ai inclu l'en-tête en haut de lpt.cpp...
J'avoue avoir un peu du mal à m'y retrouver là dedans... Si quelqu'un pouvait éclairer ma lanterne, je lui en serais très reconnaissant!!!