hi
i found bug in g++ 4.1.2 - version included with new kubuntu fiesty.
to reproduce this bug i've created 3 simple files a.h, a.cpp and main.cpp

//a.h
#ifndef A_H
#define A_H
class A{
public:
        void b(int c);
private:
int d;
};
#endif 

//a.cpp
#include "a.h"
inline void A::b(int c)
{
        d = c;
}

//main.cpp
#include "a.h"
int main()
{
        A *a = new A;
        a->b(1);
        return 0;
} 


then when i'm compiling them :
g++ -c -o a.o a.cpp - everything is ok
g++ -o A a.o main.o - i get:

main.o: In function `main':
main.cpp:(.text+0x2f): undefined reference to `A::b(int)'
collect2: ld returned 1 exit status

when i add those 2 lines to a.cpp:
#pragma implementation
#pragma interface

so it looks like this:

//a.cpp
#include "a.h"
#pragma implementation
#pragma interface
inline void A::b(int c)
{
        d = c;
}

everything is ok. i tried every possible combination of those pragmas and 
inline kayword, but only this one seams to work.

bartosz wadolowski

Reply via email to