Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;无法推断模板参数_C++_Templates - Fatal编程技术网

C++ C++;无法推断模板参数

C++ C++;无法推断模板参数,c++,templates,C++,Templates,我正在编写一个用于日志记录的通用类 可以使用要记录的字符串作为函子调用 使用一些信息(系统时间、日志级别等)丰富字符串 将日志消息传递给实现writer的输出类。writer如果使用指针作为运算符的左操作数,则应显示如何调用Logger::operator()我认为没有理由在此处使用指针而不是引用。是的,您是对的,谢谢。。。只是把它改成了参考资料。@LucTouraille:也许更好,是的。我要说的是,谢谢你,谢谢你,我应该看到:)@mbue:没问题,很高兴它有帮助;) template<

我正在编写一个用于日志记录的通用类

  • 可以使用要记录的字符串作为函子调用
  • 使用一些信息(系统时间、日志级别等)丰富字符串

  • 将日志消息传递给实现writer的输出类。writer如果使用指针作为
    运算符的左操作数,则应显示如何调用
    Logger::operator()
    我认为没有理由在此处使用指针而不是引用。是的,您是对的,谢谢。。。只是把它改成了参考资料。@LucTouraille:也许更好,是的。我要说的是,谢谢你,谢谢你,我应该看到:)@mbue:没问题,很高兴它有帮助;)
    template<class Writer>
    class Logger
    {
    public:
    Logger(Writer* writer);
    ~Logger(void);
    
    void operator() (char level, std::string message);
    
    private:
    Writer* writer;
    };
    
    template<class Writer>
    Logger<Writer>::Logger(Writer* writer)
        : writer(writer)
    {
    }
    
    template<class Writer>
    Logger<Writer>::~Logger(void)
    {
    }
    
    template<class Writer>
    void Logger<Writer>::operator ()(char level, std::string message) {
    
        /* do something fancy with the message */
        /* ... */
        /* then write to output channel */
    
        this->writer << message;
    }
    
    this->writer << message;
    
    this->writer << message;
    //    ^^^^^^
    
    *(this->writer) << message; 
    
    template<class Writer>
    class Logger
    {
    public:
        Logger(Writer& writer);
    //         ^^^^^^^
        // ...
    private:
        Writer& writer;
    //  ^^^^^^^
    };
    
    this->writer << message;