Ну вот есть такое извращенство:
file1.cc(h)
namespace nms1 {
template<class T> class Manager {...};
}
file2.cc(h)
namespace nms2 {
using nms1::Manager;
class Base{
protected:
template<class T> void funct1(...,T*, Manager<T>);
public:
virtual void funct2() {};
};
}
file3.cc(h)
namespace nms3 {
using nms2::Base;
using nms1::Manager;
class Class2 {...};
class Next : public Base {
public:
void funct2()
{
Class2* cl = new Class2();
Managet<Class2> man();
funct1<Class2>(...,cl, man);
}
};
}
Собираем сие как:
g++43 -o obj1.o -c file1.cc
g++43 -o obj2.o -c file2.cc
g++43 -o obj3.o -c file3.cc
g++43 obj1.o obj2.o obj3.o
теперь компиляция проходит а линковка отваливается со скандалами на undefined reference ns2::Base::funct1<ns3::Class2>(...)
при этом в .h файлах определения и объявления классов, реализация в .cc файлах.
Сие фигня вытащена как часть большой проги где подобный каламбур поверте оправдан.
Вопрос: как подружить линкер с сие хренью?
Похожие темы
- Форум Перегрузка вирт функции в шаблоне (2014)
- Форум ЧЯДНТ? (2014)
- Форум Шаблоны шаблонов шаблонами (2015)
- Форум Шаблон в шаблоне (2012)
- Форум [ЧЯДНТ] Upstart (2011)
- Форум bootchart ЧЯДНТ (2011)
- Форум procmailrc, ЧЯДНТ? (2014)
- Форум [ЧЯДНТ] ath5k (2010)
- Форум PerlMagick ЧЯДНТ? (2008)
- Форум audacity ЧЯДНТ? (2010)