Здравствуйте Василий Сухачев, Вы писали:
ВС>Вопрос скорее к знатокам MS Visual C++.
ВС>Почему если я выношу описания классов и реализацию в отдельные файлы (например AbstractItem.h и AbstractItem.cpp для класса AbstractItem) то компиляция проходит нормально но компоновщик выдает ошибки
А, случайно, не пытаетесь разнести шаблоны:
template <class T>
class Base
и
template <class T>
class Derived : public Base<T>
на объявление в *.h и определение в *.cpp файл[ы]?
Если это так, то все верно шаблоны в VC++ должны быть объявленны и определены в одном заголовочном файле. Это связанно с тем что компилятор на их основе генерирует классы по заданному подходящему набору аргументов шаблона. И, следовательно, компилятору необходимо иметь под рукой полное определение шаблона.