在VC6里,添加一个新的CLASS可以右击当前工程,选new class,然后VC6会自动生成类定义和类实现。现在,我想添加一个模板,我该怎么做?我手工在某个现有的类的.h文件里书写模板的定义,在.cpp文件里写模板的实现。链接报错Link2001。
把模板的实现搬到.h文件里后,才能编译链接都通过。但我想模板实现放在.cpp文件里,我该如何做?如何添加一个模板就象添加一个新class那样?
把模板的实现搬到.h文件里后,才能编译链接都通过。但我想模板实现放在.cpp文件里,我该如何做?如何添加一个模板就象添加一个新class那样?
CMyClass<int> myc;
在你的MyClass.cpp中,编译器不知道你要用int来实例化,所以就没有为 CMyClass<int>生成代码。所以连接器就无法连接,找不到CMyClass<int>
顺便说一下,这是 编译 - 链接 机制固有的局限,而不仅仅是vc6的
我还以为自己有什么地方没有写对呢
class ATL_NO_VTABLE IzhpCOMCommonImpl :
public IDispatchImpl<_xInterface, piid, plibid>
{
...........template <class _T, class _xInterface, const IID* piid, const GUID* plibid>
STDMETHODIMP IzhpCOMCommonImpl<_T, _xInterface, piid, plibid>::get_ErrDescription(BSTR *pVal)
{
// TODO: Add your implementation code here
*pVal = _bstr_t(mErrDescription).copy();
return S_OK;
}.............
哎,挣点分数不容易:去看<C++ Templates The complete Guide> (中文名 C++ Templete全览), 侯捷/荣耀/江洪 译,电子档在侯捷网站有下。(jjhou.csdn.net)看6.1.1 节,说得很清楚了。