gpt4 book ai didi

C++格式化程序类?

转载 作者:太空狗 更新时间:2023-10-29 20:30:45 25 4
gpt4 key购买 nike

我正在使用第三方提供的 C++ 类,因此无法修改它。它有许多属性,但没有方法或运算符重载 ( << ) 来创建格式化输出。我可以编写一个只返回字符串的函数,但是有没有更好的 C++ 方法来创建格式化输出而不修改类?

最佳答案

是的。您可以将流插入运算符重载为非成员函数。缺点当然是你不能让这个函数成为一个 friend (这通常是这样做的),所以你将无法输出任何没有被类通过公共(public)访问器公开的东西——但你在如果您不能修改类,无论您做什么,都将考虑到这一点。

例子:

class Foo {
public:
std::string name() const;
int number() const;
private:
// Don't care about what's in here; can't access it anyway.
};

// You write this part:

std::ostream& operator<< (std::ostream& os, const Foo& foo) {
// Format however you like in here, e.g.
os << "(" << foo.name() << "," << foo.number() << ")";
return os;
}

// Then you can write:

Foo foo;
std::out << foo;

关于C++格式化程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005244/

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