【发布时间】:2011-07-11 10:02:32
【问题描述】:
我有一个名为 w32file 的模板类,它可以与 wchar_t 和 char 一起使用。已声明:
template <typename T>
class w32file { ... }
它有很多成员方法,比如这个:
inline bool isDirectory();
现在我知道我可以将这些成员方法的所有实现放在头文件中,然后它们会被编译到使用我的模板的任何目标文件中。但是,我真的不想要这个,因为这个类会被到处使用,并且会导致大量重复的目标代码。
所以目前,我有一个 cpp 文件,它链接到一个静态库,它执行以下操作:
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);
}
现在,我的目标代码只创建了一次,但我必须在我的源代码中创建本质上相同的方法的两个副本。有谁知道解决这个问题的方法?有没有办法以模板化的方式将这两种实现扩展到我的目标文件中?
【问题讨论】: