Problème compilation

Résolu/Fermé
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 - 18 févr. 2013 à 17:33
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 - 18 févr. 2013 à 18:24
Bonjour,

J'ai un petit problème au niveau de ma compilation :

Je m'explique :

j'ai plusieurs fichiers :

Image.cpp Image.h Pixel.cpp Pixel.h et app.cpp qui contient la fonction main, et j'ai également un makefile qui contient le code suivant :

App : Image.o Pixel.o app.o
	g++ Image.o Pixel.o app.o -o App

Image.o : Image.h Pixel.h Image.cpp
	g++ -c Image.cpp

Pixel.o : Pixel.h Pixel.cpp
	g++ -c Pixel.cpp

app.o : app.cpp
	g++ -c app.cpp

	


Et voici le contenu des mes fichiers

Image.h :

#ifndef IMAGE_H
#define IMAGE_H

#include "Pixel.h"
using namespace std;
class Image
{
	
	public :

		// Attributes
		char _name;
		int _width;
		int _height;
		Pixel _pixels;


		// Operations
		void init(int,int);
		void print(void);

		
};

#endif


Image.cpp :

#include "Image.h"
#include "Pixel.h"

void Image::init(int a,int b)
{
	(*this)._width = a;
	(*this)._height = b;
	return;
}
	
void Image::print(void)
{
	//rien
}



Pixel.h :

#ifndef PIXEL_H
#define PIXEL_H

class Pixel 
{
	public :
		// Attributes
		int _red;
		int _green;
		int _blue;
};

#endif


Pixel.cpp :

#include "Pixel.h"


et app.cpp :

#include "Image.cpp"
#include "Pixel.cpp"
#include <iostream>

int main(int argc, char ** argv[])
{

	std::cout << "salut" << std::endl;
	return 0;

	//Image img;
}



Donc lorsque que je compile, le compilateur me renvoie :
 app.o: In function 'Image::print()':
app.cpp:(.text+0x0): multiple definition of 'Image::print()'
Image.o:Image.cpp:(.text+0x0): first defined here


Si j'ai bien compris, ce serait une erreur lors de l'édition des liens, mais je ne parviens pas à trouver cette erreur.

En espérant que quelq'un puisse m'aider !

Merci d'avance !






2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 18/02/2013 à 17:53
Pourquoi tu fais des #include avec des fichiers .cpp ? Ce sont tes .h qu'il faut inclure...

Ensuite, tu fais (*this)._width = a; l'utilisation de this n'est pas indispensable, tu peux directement faire width = a;

PS. Dans ton main tu mets char ** argv[], c'est un peu trop, il faut mettre char*argv[] ou éventuellement char**argv, mais pas les deux...La confiance n'exclut pas le contrôle
0
UbuntuPR Messages postés 89 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 1 août 2013 10
18 févr. 2013 à 18:24
Merci à toi,

J'ai pas les yeux en face des trous aujourd'hui, quel idiot de mettre des .cpp dans mes includes ^^.

bref merci de ton aide !
0