请教:在VC中使用类模板,需要如何设置编译器才能编译通过?
大家好:
小弟尝试着写一个类模板,但是出现很多编译问题,在此向大家请教。
我首先定义了一个类模板:
//file: MyClass.h
template <class MyType>
class MyClass
{
public:
MyClass(); //默认构造函数
MyClass(int value); //另外一个构造函数
~MyClass(); //析构函数
void Add(MyType value); //其中一个方法
private:
MyClass(const MyClass& lhs); //复制构造函数
MyClass& operator=(const MyClass& lhs); //赋值函数
//其他部分省略,主要不是逻辑问题,而是编译问题
};
//file:MyClass.cpp
#include "MyClass.h"
template <class MyType>
MyClass<MyType>::MyClass() //默认构造函数
{
//代码省略
}
template <class MyType>
MyClass<MyType>::MyClass(int value) //构造函数
{
//代码省略
}
template <class MyType>
void MyClass<MyType>::Add(MyType value) //其中一个方法
{
//代码省略
}
template <class MyType>
MyClass<MyType>::~MyClass() //析构函数
{
//代码省略
}
//=========================================
我单独编译MyClass.cpp,可以通过
cl.exe MyClass.cpp
然后,我测试这个类,结果编译不过
//file: main.cpp
#include <stdio.h>
#include "MyClass.h"
int main()
{
MyClass<char> objTest(1); //使用其中一个构造函数
return 1;
}
结果显示:
error LNK2001: unresolved external symbol
提示说MyClass(int value)和~MyClass()这两个成员有问题。
好,我改为调用另一个构造函数:
MyClass<char> objTest();
编译通过。
然后,我添加语句,调用方法:
objTest.Add('a');
结果又编译错误:
error C2228: left of '.Add' must have class/struct/union type
天哪,我简直要疯了!
请朋友们指教,我到底错在哪里!
我在MFC的窗口程序中包含这个类,也要出现编译错误!
谢谢大家!