Saya memiliki kelas templat yang terbuka, di mana saya menambahkan metode. Kelas ini berada di namespace A. Sekarang, saya memanggil metode ini di namespace lain (misalnya B). Awalnya, kompiler memberi saya kesalahan linker yang mengatakan "simbol eksternal yang belum terselesaikan" untuk metode khusus ini.
Namun, jika saya memanggil metode ini di dalam namespace yang sama (yaitu A), metode ini tertaut dengan baik. Setelah itu, ia juga terhubung dengan baik di namespace B.
Mengapa ini bisa terjadi?
Apakah ini ada hubungannya dengan pembuatan objek Templat di kelas saya?
Atul
Ini kodenya cuplikan ...
namespace sss
{
namespace AAA
{
template <<typename T, typename TAlloc = Allocator< T > >
class DLL_EXPORT A
{
public:
// Some other functions that are working fine ...
bool fooA() const;
{
return Size()>0;
}
};
}
}
//I get a linker error when I call it in another namespace (say B)...
//I am accessing this method in public method of some other class in namespace B
// Including the header for class A ...
#include A.h
namespace QQQ
{
namespace B
{
class B
{
private:
AAA::A obj; // Object of class A ...
public:
// SOme methods
// Method that calls fooA ...
GetResult()
{
fooA // This causes causes linker error when i call it here,
// but, it works when i call it in namespace AAA,
// and then it, it works here as well
}
};
Ketika saya memanggil metode ini dari dalam namespace B, ia memberikan simbol eksternal yang belum terselesaikan, namun, ketika saya memanggil ini dari dalam namespace A, ia tertaut dengan baik di A, dan lagi di B juga.
Ada ide?