我在头文件中声明了几个小的辅助函数。它看起来像这样:
//contents of foo.h
#ifndef FOO_H
#define FOO_H
void foo1(int a);
template <class mType>
void foo2( mType b);
#endif
//contents of foo.cpp
#include foo.h
void foo1(int a)
{
...
}
template <class mType>
void foo2( mType a)
{
...
}
通常当只有函数模板时我会添加一个#include "foo.cpp"
在 foo.h 的末尾使模板函数的实现在编译时对编译器可见。然而,当混合函数模板和普通函数时,这种方法似乎不起作用。在这种情况下,如何解决具有模板函数和普通函数的问题?
最佳答案
您永远不应该包含 cpp 文件。
将模板的实现放在头文件中。如果您想将其分开,请制作 2 个头文件。
//contents of foo.h
void foo1(int a);
template <class mType>
void foo2( mType a)
{
...
}
//contents of foo.cpp
#include foo.h
void foo1(int a)
{
...
}
(或者,还有 export
关键字,虽然没有主要的编译器支持它,它已在 C++11 中删除,换句话说,不要使用它)
关于c++ - 混合函数模板和普通函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003307/