【发布时间】:2017-01-15 22:49:40
【问题描述】:
其他.cpp
#include <iostream>
#include <string>
using std::cout;
template <typename T>
std::ostream & cprint(T &t, std::string msg = "Container", std::ostream & stream = cout){
stream << msg << "\t{ ";
for(typename T::iterator it = t.begin(); it != t.end(); it++)
stream << *it << " ";
stream << "}\n";
return stream;
}
我在一个单独的文件中有一个模板函数。我正在尝试在 main.cpp 文件中转发声明它。
extern template std::ostream & cprint<std::vector<int>>
(T &t, std::string msg = "Container", std::ostream & stream = cout);
我已经尝试了上述方法,但它对我不起作用。
编辑: 假设 other.cpp 具有如下基本功能,
template <typename T>
void func(T x){
cout << x << endl;
}
如何在 main.cpp 中实例化这个函数?
【问题讨论】:
-
你遇到了什么错误?
-
你不仅做错了,而且整个想法都错了,阅读这里stackoverflow.com/questions/495021/…
-
@Slava 好吧,如果您手动指定模板必须适用的所有类型,则可以将模板放入单独的文件中。
-
@HolyBlackCat
'cprint' is not a template function和expected ';' before '<' token我得到的错误。 -
@HolyBlackCat 确实如此,但是从 OP 的问题中了解理解程度,这不是他想要做的。我敢打赌下一个 OP 的问题 - 为什么它不起作用。
标签: c++ templates forward-declaration