大佬教程收集整理的这篇文章主要介绍了c – 如何在cpp文件中为多种类型创建模板类成员实现,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
template <typename T> class w32file { ... }
它有许多成员方法,例如:
inline bool isDirectory();
现在我知道我可以将这些成员方法的所有实现放在头文件中,然后将它们编译到任何使用我的模板的目标文件中.但是,我并不是真的想要这个,因为这个类将被遍地使用,并且会导致很多重复的目标代码.
bool w32utils::w32file<wchar_t>::isDirectory() { auto dwAttr = GetFileAttributes(m_name.c_str()); return ((dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY); } bool w32utils::w32file<char>::isDirectory() { auto dwAttr = GetFileAttributes(m_name.c_str()); return ((dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY); }
现在,我的目标代码只创建了一次,但我必须在源代码中创建两个基本相同的方法副本.有没有人知道这方面的方法?有没有办法以模板化的方式将两个实现扩展到我的目标文件中?
namespace w32utils { template <typename T> bool w32file<T>::isDirectory() { const auto dwAttr = GetFileAttributes(m_name.c_str()); return ((dwAttr & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY); } template class w32file<char>; template class w32file<wchar_t>; }
请注意,我强烈建议将其放在标题中并将其内联!
以上是大佬教程为你收集整理的c – 如何在cpp文件中为多种类型创建模板类成员实现全部内容,希望文章能够帮你解决c – 如何在cpp文件中为多种类型创建模板类成员实现所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。