C++11 枚举只能通过正确的引用传递
我想请某人解释一下,为什么枚举只能通过正确的引用传递,而不能通过简单的引用传递C++11 枚举只能通过正确的引用传递,c++11,C++11,我想请某人解释一下,为什么枚举只能通过正确的引用传递,而不能通过简单的引用传递 namespace n1 { enum e1 { f = 1, f1 }; } void f(n1::e1&& e) { std::cout<<static_cast<int>(e); } int main() { f(n1::e1::f1); return 0; } 名称空间n1 { 枚举e1
namespace n1
{
enum e1
{
f = 1,
f1
};
}
void f(n1::e1&& e)
{
std::cout<<static_cast<int>(e);
}
int main()
{
f(n1::e1::f1);
return 0;
}
名称空间n1
{
枚举e1
{
f=1,
f1
};
}
空f(n1::e1和e)
{
std::coutenum
s是常量,因此不能将其视为n1::e1&
,而应视为const n1::e1&
:
void f(const n1::e1& e) {
std::cout<<static_cast<int>(e);
}
void f(常数n1::e1&e){
std::coutenum
s是常量,因此不能将其视为n1::e1&
,而应视为const n1::e1&
:
void f(const n1::e1& e) {
std::cout<<static_cast<int>(e);
}
void f(常数n1::e1&e){
std::cout枚举是整型常量:
- 函数的枚举参数必须是常量
备注:您不必强制转换枚举来打印他的值
空f(常数n1::e1&e){
std::cout枚举是整型常量:
- 函数的枚举参数必须是常量
备注:您不必强制转换枚举来打印他的值
空f(常数n1::e1&e){
你能解释一下“Rem”是什么意思吗?是“提醒”还是“记住”,还是其他什么意思?你能解释一下“Rem”是什么意思吗是指?是“提醒”还是“记住”还是其他?您应该使用枚举类而不是命名空间/枚举模式,或者忽略强制转换并通过使用此模式来欺骗lil,这样您就不必强制转换。您应该使用枚举类而不是命名空间/枚举模式,或者忽略强制转换并通过使用此模式欺骗lil,以便你不必强制转换它。同意答案,但我建议按值传递enum
(或任何其他小对象,如std::span
,std::string\u view
等)。@Quarra当它是const
时,绝对同意答案,但我建议传递enum
(或任何其他小对象,如std::span
,std::string\u view
等)的值。@Quarra当它是const
时,绝对正确。