【发布时间】:2021-06-04 15:07:41
【问题描述】:
在 C++ 中不能有虚拟模板方法。我想要一个接口和一些实现它的类。例如:
class Logger {
public:
template<typename... Args>
virtual void Error(const std::string& message, Args... args) const = 0;
};
class ConsoleLogger : public Logger {
public:
template<typename... Args>
void Error(const std::string& message, Args... args) const{}
};
有什么解决办法吗?我还是想用这个界面。
【问题讨论】:
-
你考虑过CRTP吗?
-
您可以使用奇怪重复的模板模式或 pimpl 代替继承。
-
我没有听说过 CRTP。谢谢各位,我会研究的。
-
@LiviuDorobantu 下面是一个使用 CRTP 的记录器的快速实现:gcc.godbolt.org/z/KndG73sYf
-
再次感谢您,弗兰克!
标签: c++ templates interface variadic