使用vector的C ++模板类

时间:2014-03-10 17:16:36

标签: c++ templates vector template-classes

在我的一个小项目中,我有这样的情况:

// Header file
template <typename T>;
class AClass
{
public:
    virtual void doSomething() const;
private:
    std::vector<T> *v;
};

// separate cpp file
template <typename T>
void AClass<T>::doSomething() const
{
    // use the vector here
}

// main.cpp
#include "AClass.h"

int main()
{
    AClass<int> anObject;
    anObject.doSomething();

    return 0;
}

这段代码编译得很好但无法链接,因为在主文件中链接器无法找到AClass的实现,除非我将它添加到cpp文件中:

template class AClass<int>;

但这只是愚蠢的,因为它消除了使用模板的优势。

现在的问题是: 有没有办法解决链接问题而不使用cpp文件中的类转发,或者这是不可能在单独的.h文件和.cpp文件中有这样的东西?放弃前瞻性声明对我来说不是一个选择。

我真的想对此有一些澄清。

由于

0 个答案:

没有答案