ACE中的模板采用分离模式是怎么实现的?
平时我们写带有模板的类时,要么直接把一个类的声明与定义都放在一个头文件,使用的时候直接包含这个头文件即可;要么分成一个.h和.cpp,然后引用这个类时候包含.cpp,但是看ACE中的采用的是分离模式,使用这个类的时候只是包含头文件,请问哪位大侠说说这个怎么实现的? 楼主仔细看,头文件末尾一般都有一个同名的.inl文件这个文件一般是包含模板的实现。 回复 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]