小编典典

将 C++ 模板函数定义存储在 .CPP 文件中

all

我有一些模板代码,我希望将其存储在 CPP 文件中,而不是内联在标题中。我知道只要您知道将使用哪些模板类型就可以做到这一点。例如:

.h 文件

class foo
{
public:
    template <typename T>
    void do(const T& t);
};

.cpp 文件

template <typename T>
void foo::do(const T& t)
{
    // Do something with t
}

template void foo::do<int>(const int&);
template void foo::do<std::string>(const std::string&);

请注意最后两行 - foo::do 模板函数仅与 ints 和 std::strings 一起使用,因此这些定义意味着应用程序将链接。

我的问题是 - 这是一个讨厌的 hack 还是可以与其他编译器/链接器一起使用?我目前仅将此代码与 VS2008 一起使用,但希望移植到其他环境。


阅读 241

收藏
2022-03-04

共1个答案

小编典典

您描述的问题可以通过在标题中定义模板或通过您上面描述的方法来解决。

我建议阅读C++ FAQ Lite中的以下几点:

他们详细介绍了这些(和其他)模板问题。

2022-03-04