【发布时间】:2021-11-29 16:07:00
【问题描述】:
如何将模板化类的任何对象传递给 C++11 中的另一个函数?
在passInObj 下面的sn-p 中没有编译,因为它抱怨Printer&。我想传入任何Printer,不管我使用的是哪个模板T。
我该怎么做?为什么下面的解决方案不起作用?
#include <iostream>
#include <vector>
template <typename T>
class Printer {
public:
Printer(const T& tl) : t(tl) {}
void print() const {
for (auto x : t) {
std::cout << x << std::endl;
}
}
const T &t;
};
// THIS LINE DOES NOT COMPILE
void passInObj(const Printer& p) {
p.print();
}
int main() {
std::vector<std::string> vec;
vec.push_back("ABC");
Printer<std::vector<std::string>> printer(vec);
printer.print();
passInObj(p);
return 0;
}
【问题讨论】: