gpt4 book ai didi

c++ - 为成员函数中类的枚举成员重载运算符 <<

转载 作者:行者123 更新时间:2023-11-28 01:09:29 25 4
gpt4 key购买 nike

如何为作为类成员的枚举重载 << 运算符。具体来说,我有以下代码:

#include <iostream>

using namespace std;

namespace foo {
class bar {
public:
enum a { b, c, d};

static void print() {
cout << b << endl;
}
};

ostream& operator<< (ostream& os, bar::a var) {

switch (var) {
case bar::b:
return os << "b";
case bar::c:
return os << "c";
case bar::d:
return os << "d";
}
return os;
}


}
int main() {
foo::bar::print();

return 0;
}

如何让打印函数打印“b”而不是“1”?

最佳答案

这是一个简单的解决方案:

#include <iostream>

using namespace std;

namespace foo {

class bar {
public:
enum a { b, c, d};

static void print();
};

ostream& operator<< (ostream& os, bar::a var) {

switch (var) {
case bar::b:
return os << "b";
case bar::c:
return os << "c";
case bar::d:
return os << "d";
}
return os;
}


void bar::print() {
cout << b << endl;
}
}
int main() {
foo::bar::print();

return 0;
}

[编辑] 正如 aschepler 先前所述,您只需要确保 operator<<(ostream &, bar::a)bar::print 的定义之前可见.

关于c++ - 为成员函数中类的枚举成员重载运算符 <<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147854/

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