У меня есть открытый класс шаблона, в который я добавил метод. Этот класс находится в пространстве имен A. Теперь я вызываю этот метод в другом пространстве имен (скажем, B). Первоначально компилятор выдал мне ошибку компоновщика, говорящую о "неразрешенном внешнем символе" для этого конкретного метода.
Однако, если я вызываю этот метод внутри того же пространства имен (то есть A), он хорошо связывается. После этого он также хорошо связывается в пространстве имен B.
Почему это может происходить?
Это как-то связано с созданием объекта Template моего класса?
Atul
Вот код фрагмент ...
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
}
};
Когда я вызываю этот метод из пространства имен B, он дает неразрешенный внешний символ, но когда я вызываю его из пространства имен A, он хорошо связывается в A, а также в B.
Есть идеи?