Chinaunix

标题: C++模板类问题,诚心求教! [打印本页]

作者: dpxiong19    时间: 2013-09-16 20:27
标题: C++模板类问题,诚心求教!
本帖最后由 dpxiong19 于 2013-09-16 20:29 编辑
  1. typedef PIOPlugin (*plgIOPluginCreate_Def)();

  2. template <class T>
  3. class TLibraryBase
  4. {
  5. public:
  6.     TLibraryBase() { Handle = NULL; } // Default constructor.
  7.     TLibraryBase(const string &FileName) { Load(FileName); } // Load constructor.
  8.     ~TLibraryBase() { if (Handle != NULL) Unload(); } // Destructor.

  9.     void Load(const string &FileName);
  10.     void Unload();
  11.     string LibName() { return LibFileName; }

  12.     T plgCreate;
  13. private:
  14.     TPluginHandle Handle;
  15.     string LibFileName;
  16. };

  17. template class TLibraryBase<plgIOPluginCreate_Def>;
  18. typedef TLibraryBase<plgIOPluginCreate_Def> TIOLibrary;
复制代码
第一行的typedef PIOPlugin (*plgIOPluginCreate_Def)();中的(*plgIOPluginCreate_Def)()是值什么意思呢?我想请问这时TlibraryBase类中的T指的是plgIOPluginCreate_Def,这是什么类型呢,还有类中的“T plgCreate;”,其中plgCreate是什么类型的呢,是指函数么?小弟才浅,请各位大神不吝赐教,谢谢!
作者: linux_c_py_php    时间: 2013-09-16 21:45
本帖最后由 linux_c_py_php 于 2013-09-16 21:45 编辑

template class TLibraryBase<plgIOPluginCreate_Def>; 这句是模板显式实例化, 可以达到分离模板类定义和模板类实现的目的.

typedef TLibraryBase<plgIOPluginCreate_Def> TIOLibrary; 这是起一个别名.
作者: pprpg    时间: 2013-09-17 17:28
plgIOPluginCreate_Def 是函数类型。

如:
PIOPlugin a1();
PIOPlugin a2();

函数a1,a2都是plgIOPluginCreate_Def类型.

作者: weiai028    时间: 2013-09-17 18:28
点不懂,完全忘记了
作者: myworkstation    时间: 2013-09-17 18:37
回复 1# dpxiong19

typedef PIOPlugin (*plgIOPluginCreate_Def)();定义了一个函数指针类型,plgCreate是个函数指针。
   
作者: MWSandy    时间: 2013-09-20 02:23
定义函数指针类型




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2