gpt4 book ai didi

c++ - 编译器认为我正在传递 std::ofstream*&,传递 std::ofstream*

转载 作者:行者123 更新时间:2023-11-28 00:31:52 26 4
gpt4 key购买 nike

我最近写了一个记录器类。编译这段代码时:

std::ofstream *stream = new std::ofstream;
stream->open( log_file_name.c_str() );

assert( stream->is_open() );

logger( stream, std::string("blurp") );

我得到错误:

no match for call to '(name::space::logger)( std::ofstream*&, std::string )'

关于最后一行代码。

定义logger的头文件是:

namespace name {
namespace space {
class logger {
private:
std::ofstream *stream;
std::string name;
public:
void log( std::string, std::string );
logger( std::ofstream *, std::string );
logger();
};
}
}

而且我已经准确无误地实现了那里原型(prototype)化的所有函数/构造函数。

这可能是什么原因造成的?感谢你的时间,Erkling。

最佳答案

编译器认为您正在对名为 logger 的对象调用 operator()。看来您想要做的是创建一个 logger 实例:

logger log(stream, std::string("blurp") );

这里,log 是类 name::space::logger 的一个实例。

关于c++ - 编译器认为我正在传递 std::ofstream*&,传递 std::ofstream*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22554089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com