Ошибки компоновщика при попытке указать шаблон класса для производного класса - PullRequest
0 голосов
/ 26 апреля 2019

Я новичок в этом шаблоне классов C ++. Что я тут не так делаю?

scrollbars.h файл:

namespace Scrollbars
{

template <typename T>
class CScrollbars : public T
{
public:
    CScrollbars();
    ~CScrollbars();
};

};

scrollbars.cpp файл:

#include "Scrollbars.h"

namespace Scrollbars
{

template<class T>
CScrollbars<T>::CScrollbars()
{
    //Constructor
}

template<class T>
CScrollbars<T>::~CScrollbars()
{
    //Destructor
}

};

Все приведенные выше шаблоны предназначены для того, чтобы я мог получить их базовый класс из различных других классов. Например, в приведенном ниже классе я хочу, чтобы CFancyEdit был получен из CScrollbars, который, в свою очередь, должен быть производным от произвольного класса, в данном случае CRichEditCtrl, но может быть любым другим классом:

FancyEdit.h файл:

namespace FancyEdit
{
using namespace Scrollbars;

//Derive it from the MFC class CRichEditCtrl
class CFancyEdit : public CScrollbars<CRichEditCtrl>
{
public:
    CFancyEdit();
    ~CFancyEdit();
};

};

FancyEdit.cpp файл:

#include "FancyEdit.h"

namespace FancyEdit
{

CFancyEdit::CFancyEdit()
{
    //Constructor
}

CFancyEdit::~CFancyEdit()
{
    //Destructor
}

};

Он компилируется нормально, но выдает мне следующие ошибки компоновщика:

1>FancyEdit.obj : error LNK2019: unresolved external symbol "public: __cdecl Scrollbars::CScrollbars<class CFancyEdit>::CScrollbars<class CFancyEdit>(void)" referenced in function "public: __cdecl FancyEdit::CFancyEdit::CFancyEdit(void)"
1>FancyEdit.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl Scrollbars::CScrollbars<class CFancyEdit>::~CFancyEdit<class CFancyEdit>(void)" referenced in function "int `public: __cdecl FancyEdit::CFancyEdit::CFancyEdit(void)'::`1'::dtor$0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...