touseit 发表于 2010-9-4 14:41:35

ACE中的模板采用分离模式是怎么实现的?

平时我们写带有模板的类时,要么直接把一个类的声明与定义都放在一个头文件,使用的时候直接包含这个头文件即可;要么分成一个.h和.cpp,然后引用这个类时候包含.cpp,但是看ACE中的采用的是分离模式,使用这个类的时候只是包含头文件,请问哪位大侠说说这个怎么实现的?

modern 发表于 2010-9-5 10:32:45

楼主仔细看,头文件末尾一般都有一个同名的.inl文件
这个文件一般是包含模板的实现。

touseit 发表于 2010-9-6 09:01:00

回复 2# modern
谢谢版主的提醒!
昨天仔细看了一下单例模板ACE_Singleton的实现,确实头文件的最后有几组条件编译:
#if defined (__ACE_INLINE__)
#include "ace/Singleton.inl"
#endif /* __ACE_INLINE__ */

#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
#include "ace/Singleton.cpp"
#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */

#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
#pragma implementation ("Singleton.cpp")
#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
其实他还是相当于写在一起了,不知道我这样理解有没有问题?
页: [1]
查看完整版本: ACE中的模板采用分离模式是怎么实现的?