我想知道是否有可能有一个函数参数而不关心它的类型是什么。 例如,我有一个覆盖的类<<运营商。但它唯一能做的就是将param添加到私有ostringstream:
CLog& CLog::operator <<(const char * txt) {
buffer << txt;
return *this;
}
但是,这只允许我将const char写入缓冲区。我需要参数为ostringstream <<
接受的任何类型。这可能吗?
答案 0 :(得分:5)
您可以使用模板:
template <typename T>
CLog& CLog::operator <<(const T& p) {
buffer << p;
return *this;
}
答案 1 :(得分:1)
可以使用模板完成:
template <class T>
Clog& Clog::operator <<(const T& t) {
buffer << t;
return *this;
}
答案 2 :(得分:1)
在这种情况下,您可以使用template
。
template<class T>
CLog& Clog::operator <<(const T& value) {
buffer << value;
return *this;
}
请确保您没有传递对ofstringstream
无效的任何内容。
答案 3 :(得分:0)
另一个答案基本上是正确的,但它们不支持移动操作。使用
template <typename T>
CLog& CLog::operator <<(T&& p) {
buffer << std::forward<T>(p);
return *this;
}