使用模板类导致error LNK2019: 无法解析的外部符号
2014-02-09 22:35
309 查看
1.定义模板类:
template<class T>
class Stack
{....};
2.定义模板成员函数:
每个函数头都要以相同的模板声明打头,并将类限定符改成:类名<T>::这种形式。
template<class T>
bool Stack<T>::push(T tmp)
{...}
3.模板类的使用
Stack<int> object;
4.除非编译器实现了新的export关键字,否则将模板成员函数设置在一个独立的实现文件中将无法运行。因为模板不是函数,它们不能单独编译。模板必须与特定的模板实例化请求一起使用。为此,最简单的方法是将所有模板信息放在一个头文件里,并在要使用这些模板的文件中包含该头文件。如果编译器实现了心得export关键字,则可以将模板方法定义放在一个独立文件中,条件是每个模板声明都是以export开始:
#ifdef STACKTP_H_
#define STACKTP_H_
export template<class T>
class Stack
{......}
#endif
然后按常规类的方式进行:
1.将模板类声明(包括关键字export)放在一个头文件中,并使用#include编译指令时程序能够使用这些声明。
2.将模板类的方法定义放在源代码文件中,在该文件中包含头文件,并使用工程文件时程序能够使用这些定义。
template<class T>
class Stack
{....};
2.定义模板成员函数:
每个函数头都要以相同的模板声明打头,并将类限定符改成:类名<T>::这种形式。
template<class T>
bool Stack<T>::push(T tmp)
{...}
3.模板类的使用
Stack<int> object;
4.除非编译器实现了新的export关键字,否则将模板成员函数设置在一个独立的实现文件中将无法运行。因为模板不是函数,它们不能单独编译。模板必须与特定的模板实例化请求一起使用。为此,最简单的方法是将所有模板信息放在一个头文件里,并在要使用这些模板的文件中包含该头文件。如果编译器实现了心得export关键字,则可以将模板方法定义放在一个独立文件中,条件是每个模板声明都是以export开始:
#ifdef STACKTP_H_
#define STACKTP_H_
export template<class T>
class Stack
{......}
#endif
然后按常规类的方式进行:
1.将模板类声明(包括关键字export)放在一个头文件中,并使用#include编译指令时程序能够使用这些声明。
2.将模板类的方法定义放在源代码文件中,在该文件中包含头文件,并使用工程文件时程序能够使用这些定义。
相关文章推荐
- 使用模板类导致error LNK2019: 无法解析的外部符号
- 使用模板类导致error LNK2019: 无法解析的外部符号
- 使用模板类导致error LNK2019: 无法解析的外部符号
- 模板类 error LNK2019: 无法解析的外部符号
- 使用动态库时出现,error LNK2019 无法解析的外部符号可能的解决方法。
- C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…
- 字符集导致的 error LNK2019: 无法解析的外部符号 "__declspec(dllimport)
- 模板类 error LNK2019: 无法解析的外部符号
- 使用模板时 error LNK2019: 无法解析的外部符号
- 关于使用Transparent导致无法解析的外部符号的解决办法
- 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录
- 学习笔记-----关于VS中使用模板类出现无法解析的外部符号问题
- 模板类 error LNK2019: 无法解析的外部符号
- 模板类 error LNK2019: 无法解析的外部符号
- VS2005使用WTL出现 “error LNK2019: 无法解析的外部符号_main”的解决方法
- error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)”中被引用
- 【再次讨论】关于error lnk2019 无法解析的外部符号
- C++中使用类模板定义对象时出现:“error LNK2019: 无法解析的外部符号”的解决办法
- error LNK2019: 无法解析的外部符号 _WinMain@16
- error LNK2019: 无法解析的外部符号_imp__MessageBoxA@16,该符号在函数 _WinMain@16 中被引用