Forum Programmation.c++ erreur de destructeur sous gcc

Posté par  .
Étiquettes : aucune
0
2
juin
2005
bonjour
je développe sous FC2.Je porte une grosse application en C++ de Vxworks sous Linux (environ 250 .cpp et autant de .h) !
Je suis débutant sous Linux et avec C++.
j'utilise les versions suivantes :
version gcc 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
GNU ld version 2.15.90.0.3 20040415
après une édition de lien ld me retourne
le message : undefined reference to `operator delete[](void*)

Mon fichier except.h contient :
class Exception
{
public:

Exception(const char* name, const char* who, const char* what);
virtual ~Exception() {;};
protected:
...
private:
...
};
// eof

Mon fichier except.cpp contient :
#include "except.h"
blabla...

Exception::~Exception(){;}
....
// eof

merci pour votre aide.

Bernard
  • # Inline

    Posté par  . Évalué à 2.

    Retire les trois caractères {;} de ton .h , sinon tu déclares ta fonction comme étant inline, qui donc n'aurait pas pas besoin d'être déclaré dans ton *.cpp .

    De plus, tu peux te passer de ton point-virgule isolé, et te contenter d'un {}.

    Enfin, les destructeurs virtuels, à l'inverse des méthodes ordinaires qui sont couramment virtualisées, sont quelque chose de très subtil et rarement nécessaires. Vire le mot-clé virtual aussi et réessaie.
    • [^] # Re: Inline

      Posté par  . Évalué à 1.

      dèjà, merci de me faire avancer.
      J'ai corrigé le source (retrait de {;} dans le .h et ; dans le cpp.
      En retirant le 'virtual' la compilation me sort le message
      'class Exception' has virtual functions but non-virtual destructor'
      et le link me rend la même erreur. :-(
      ???
      ps:
      quel est l'usage des balises dans le message ?
      j'ai compris pour commencer en italique mais pas pour finir ?
      • [^] # Re: Inline

        Posté par  . Évalué à 2.

        j'ai compris pour commencer en italique mais pas pour finir ?

        Ben c'est du HTML tout bête :

        Début du mode italique : <i>
        Fin du mode italique :</i> (note le slash avant le "i")

        Pour le reste, je pense que ton problème de référence manquante ne doit pas venir du destructeur de la fonction, mais d'ailleurs. Il faudrait que tu nous donnes le message d'erreur complet , avec éventuellement les numéros de ligne qui vont à coté, s'il y en a.
    • [^] # Re: Inline

      Posté par  . Évalué à 1.

      > Enfin, les destructeurs virtuels, à l'inverse des méthodes ordinaires qui sont couramment virtualisées, sont quelque chose de très subtil et rarement nécessaires. Vire le mot-clé virtual aussi et réessaie.

      Uh ?
      http://blogs.msdn.com/oldnewthing/archive/2004/05/07/127826.aspx(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.