Bonjour tout le monde,
Pour des raisons d'optimisation de rapidité, j'aimerais rendre quelques petites fonctions d'une de mes classes en inline, mais ça ne marche pas : voici un code simplifié qui illustre mon problème :
----- main.cpp : -----
#include <conio.h>
#include "test.h"
int main(int argc, char *argv[])
{
MaClasse test;
test.dire_bonjour();
getch();
return 0;
}
----- test.h : -----
#ifndef TEST_H
#define TEST_H
#include <stdio.h>
class MaClasse {
public:
inline void dire_bonjour(void) const;
};
#endif // TEST_H
----- test.cpp : -----
#include "test.h"
void MaClasse::dire_bonjour(void) const
{
printf("Bonjour !\n");
}
Erreur : "release/main.o:main.cpp::-1: error: undefined reference to `MaClasse::dire_bonjour() const'"
En retirant le "inline" de ce programme, la compilation (et l'exécution) fonctionnent à nouveau sans problème ...
J'ai aussi remarqué qu'en mettant tout dans un seul fichier, cela re-marchait, même avec le inline : le code ci-dessous ne pose pas de problème.
----- main.cpp -----
#include <stdio.h>
#include <conio.h>
class MaClasse {
public:
inline void dire_bonjour(void) const;
};
void MaClasse::dire_bonjour(void) const
{
printf("Bonjour !\n");
}
int main(int argc, char *argv[])
{
MaClasse test;
test.dire_bonjour();
getch();
return 0;
}
Serait-ce possible de rendre la fonction de ma classe inline tout en étant accessible à l'extérieur du fichier ?
Merci d'avance !