Pages : 1
#1 Le 16/09/2013, à 21:43
- kboo
c++ compilation... simple..
bonjour,
je rame pour un truc tout simple que j'arrive pas à compiler... je comprend pas car c'est bidon !!
Mere.h:
#ifndef MERE_H_
#define MERE_H_
class Mere
{
int variable;
public:
Mere();
~Mere();
int getVar();
void setVar(int var);
};
#endif
Mere.cpp:
#include "Mere.h"
Mere::Mere()
{
variable = 0;
}
int Mere::getVar()
{
return variable;
}
void Mere::setVar(int var)
{
variable = var;
}
et
main.cpp:
#include <iostream>
#include "Mere.h"
int main (void)
{
std::cout << "cool" << std::endl;
Mere a;
a.setVar(10);
std::cout << a.getVar() << std::endl;
return 0;
}
Pour compiler je fais:
g++ main.cpp
et ça donne:
main.cpp:(.text+0x36): undefined reference to `Mere::Mere()'
main.cpp:(.text+0x4a): undefined reference to `Mere::setVar(int)'
main.cpp:(.text+0x56): undefined reference to `Mere::getVar()'
main.cpp:(.text+0x87): undefined reference to `Mere::~Mere()'
main.cpp:(.text+0x99): undefined reference to `Mere::~Mere()'
collect2: error: ld returned 1 exit status
et quand je compile comme ça:
g++ main.cpp Mere.cpp
ça donne:
Mere.cpp:3:12: error: definition of implicitly-declared ‘Mere::Mere()’
Mais pourquoi? que dois-je faire? c'est pourtant si simple.. :-((((
merci bcp d'avance
Dernière modification par kboo (Le 16/09/2013, à 21:46)
Hors ligne
#2 Le 16/09/2013, à 22:10
- Compte supprimé
Re : c++ compilation... simple..
Bonsoir,
quand je compile comme ça:
g++ main.cpp Mere.cpp
C'est juste.
Tu as juste oublié de créer la méthode de destruction dans "Mere.cpp" que tu as déclaré dans "Mere.h" :
Mere::~Mere(){}
Dernière modification par Cirius1987 (Le 16/09/2013, à 22:29)
#3 Le 17/09/2013, à 10:53
- Braun
Re : c++ compilation... simple..
Eh oui, l'informatique ce n'est pas comme la politique, les promesses ne suffisent pas.
Même une fonction qui ne fait rien doit être déclarée et définie.
Hors ligne
Pages : 1