C++ 重载运算符<&书信电报;(ostream&;,T)其中T是;枚举类MyEnum“;
我一直在尝试重载操作符C++ 重载运算符<&书信电报;(ostream&;,T)其中T是;枚举类MyEnum“;,c++,c++11,operator-overloading,ostream,C++,C++11,Operator Overloading,Ostream,我一直在尝试重载操作符std::ostream是std::basic\u ostream的别名 std::wcout属于std::basic_ostream类型,也称为std::wostream。注意不同的字符类型 如果您需要操作符std::ostream是std::basic\u ostream的别名 std::wcout属于std::basic_ostream类型,也称为std::wostream。注意不同的字符类型 如果需要运算符argh。我看着ostream,可以发誓我看到的是std::
std::ostream
是std::basic\u ostream
的别名
std::wcout
属于std::basic_ostream
类型,也称为std::wostream
。注意不同的字符类型
如果您需要
操作符std::ostream
是std::basic\u ostream
的别名
std::wcout
属于std::basic_ostream
类型,也称为std::wostream
。注意不同的字符类型
如果需要运算符argh。我看着ostream,可以发誓我看到的是std::basic_ostream。我看着ostream,可以发誓我看到的是std::basic_ostream
/* enum class Color { ... } */
Color color = GetColor();
std::wcout << L"The color is " << color << std::endl;
The color is Green.
#include <iostream>
#include <string>
/* (global scope) */
enum class enum_type_1 { e1_enumerand };
inline std::ostream& operator<<(std::ostream& os, enum_type_1 value)
{
return os << L"e1_enumerand"; // switch-cases omitted
}
class cls
{
public:
enum class enum_type_2 { e2_enumerand };
friend inline std::ostream& operator<<(std::ostream& os, enum_type_2 value)
{
return os << L"e2_enumerand"; // switch-cases omitted
}
};
namespace ns
{
enum class enum_type_3 { e3_enumerand };
inline std::ostream& operator<<(std::ostream& os, enum_type_3 value)
{
return os << L"e3_enumerand"; // switch-cases omitted
}
}
int _tmain(int argc, wchar_t* argv[])
{
enum_type_1 e1 = enum_type_1::e1_enumerand;
cls::enum_type_2 e2 = cls::enum_type_2::e2_enumerand;
ns::enum_type_3 e3 = ns::enum_type_3::e3_enumerand;
std::wcout << L"The value of e1 is " << e1 << std::endl;
std::wcout << L"The value of e2 is " << e2 << std::endl;
std::wcout << L"The value of e3 is " << e3 << std::endl;
std::cin.ignore();
return 0;
}
d:\...\main.cpp(43): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'enum_type_1' (or there is no acceptable conversion)
d:\...\main.cpp(43): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'enum_type_1' (or there is no acceptable conversion)
c:\...\ostream(498): could be 'std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &std::basic_ostream<wchar_t,std::char_traits<wchar_t>>::operator <<(std::basic_streambuf<wchar_t,std::char_traits<wchar_t>> *)'
.
.
.
d:\...\main.cpp(11): or 'std::ostream &operator <<(std::ostream &,enum_type_1)'
.
.
.
with
[
_Ty=enum_type_1
]
while trying to match the argument list '(std::basic_ostream<wchar_t,std::char_traits<wchar_t>>, enum_type_1)'
d:\...\main.cpp(44): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'cls::enum_type_2' (or there is no acceptable conversion)
c:\...\ostream(498): could be 'std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &std::basic_ostream<wchar_t,std::char_traits<wchar_t>>::operator <<(std::basic_streambuf<wchar_t,std::char_traits<wchar_t>> *)'
.
.
.
d:\...\main.cpp(11): or 'std::ostream &operator <<(std::ostream &,enum_type_1)'
d:\...\main.cpp(21): or 'std::ostream &operator <<(std::ostream &,cls::enum_type_2)' [found using argument-dependent lookup]
.
.
.
c:\...\ostream(988): or 'std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &std::operator <<<wchar_t,std::char_traits<wchar_t>,cls::enum_type_2>(std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &&,const _Ty &)'
with
[
_Ty=cls::enum_type_2
]
while trying to match the argument list '(std::basic_ostream<wchar_t,std::char_traits<wchar_t>>, cls::enum_type_2)'
d:\...\main.cpp(45): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'ns::enum_type_3' (or there is no acceptable conversion)
c:\...\ostream(498): could be 'std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &std::basic_ostream<wchar_t,std::char_traits<wchar_t>>::operator <<(std::basic_streambuf<wchar_t,std::char_traits<wchar_t>> *)'
.
.
.
d:\...\main.cpp(11): or 'std::ostream &operator <<(std::ostream &,enum_type_1)'
d:\...\main.cpp(31): or 'std::ostream &ns::operator <<(std::ostream &,ns::enum_type_3)' [found using argument-dependent lookup]
.
.
.
c:\...\ostream(988): or 'std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &std::operator <<<wchar_t,std::char_traits<wchar_t>,ns::enum_type_3>(std::basic_ostream<wchar_t,std::char_traits<wchar_t>> &&,const _Ty &)'
with
[
_Ty=ns::enum_type_3
]
while trying to match the argument list '(std::basic_ostream<wchar_t,std::char_traits<wchar_t>>, ns::enum_type_3)'