gpt4 book ai didi

c++ - 运算符 << 重载的解释

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:45 25 4
gpt4 key购买 nike

我想了解运算符重载的工作原理。

我想编码它以便我可以写

Log(Log::LEVEL_ERR) << "fatal error: " << 13 ; 

并且对于字符串和数字都使用了重载运算符。

我现在有

class Log{
public:
std::ostream& operator<<(char const*);
}

std::ostream& Log::operator<<(char const* text){
if (Log::isToWrite()) {
printLevel();
std::cout << text;
}
return std::cout;
}

这只得到字符串而不是数字,为什么?

编辑@bitmask 明确一点,你的意思是像这样实现:

class Log{
public:
friend Log& operator<<(Log& in, char const* text);
}

friend Log& operator<<(Log& in, char const* text){
if (in.isToWrite()) {
in.printLevel();
std::cout << text;
}
return std::cout;
}

因为我现在到处都能买到这些:

error: Semantic Issue: Invalid operands to binary expression ('Log' and 'const char [15]')

也许这真的很简单,但你能帮我拼出来吗?
我真的不明白。

最佳答案

因为您返回了一个 ostream& , 下一个 <<运算符匹配 operator<<(ostream&, int) .你应该return *this; (类型为 Log& ),以便下一个 <<运算符匹配为您的类定义的运算符。

关于c++ - 运算符 << 重载的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969545/

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