c++ compilation error (undefined reference)

Andrea Bocci fwyzard@inwind.it
Mon Oct 28 03:12:00 GMT 2002

The compiler is telling you that it cannot find the TGA constructor. Well, 
can't blame it, you didn't provide one :-)
IIRC, to get the default constructor (doing nothing but allocating the 
class itself, more or less) and esructor (idem), you sould not declare them.
If you do, the compiler expect you do define them, too, hence the link error.


At 01.48 28/10/2002 +0100, Baraclese wrote:
>Hi, I wrote a TGA header file and I wanted to test it with a small main file.
>tga.h looks something like this:
>class TGA
>         public:
>                 TGA();
>                 TGA(char *filename);
>                 ~TGA();
>                 bool load(char const *filename);
>tga.cpp looks like this:
>#include "tga.h"
>using namespace std;
>         TGA image;
>         cout << "Filename: ";
>         cin >> image.filename;
>         if (image.load(image.filename))
>                 cout << "File successfully read./n";
>         return 0;
>When compiling using gcc 3.2 I receive the following error message:
>$ g++ -mno-cygwin -lstdc++ f:/projects/cpp/tga.cpp -o tga.exe
>/cygdrive/c/WIN98/TEMP/cccSDKcK.o(.text+0x9f0):tga.cpp: undefined 
>reference to `TGA::TGA()'
>What's the problem here?

More information about the Gcc-help mailing list