I got an interesting problem:
Lib.h
Code:
namespace MySpace{
class Utility{
...omit constructor...
void foo();
};
}
Lib.cc
Code:
#include "Lib.h"
...omit constructor...
void MySpace::Utility::foo(){
...
}
Main.h
Code:
#include "Lib.h"
namespace MySpace{
class ABC{
void abcFoo();
};
}
Main.cc
Code:
#include "Main.h"
void MySpace::ABC::abcFoo(){
Utility uty;
uty.foo();
}
The linker complains:
Main.cc line3: undefined reference to MySpace::Utility::Utility()
Main.cc line4: undefined reference to MySpace::Utility::foo()
collect2: ld returned 1 exit status
But when I put Utility class in Main.h the problem disappears!
Main.h
Code:
namespace MySpace{
class ABC{
void abcFoo();
};
class Utility{
void foo();
};
}
Main.cc
Code:
#include "Main.h"
void MySpace::ABC::abcFoo(){
Utility uty;
}
void MySpace::Utility::foo(){
...
}
What's going on here?