当为 cpp 强调 func 是显式时,我得到一个错误
When emphasizing for cpp that a func is explicit I get an error
您好,我写了一个从 myClass 到 int 的转换函数,反之亦然,因此我将其中一个函数设为显式。这样做时出现错误。
函数:
CircularInt(int n): CircularInt(1, 12 , n) { }
explicit operator int() const{ return current;};
错误:
CircularInt hour {1, 10 , 7 }; // current = 7
int i = hour;
错误:
error: cannot convert ‘CircularInt’ to ‘int’ in initialization
int i = hour;
擦除"explicit"时一切正常,这是为什么?
p.s.
我可以提一下,我找不到完全像这样的问题,我发现很多人的问题都忘了做明确的,问什么是明确的(在那些确切的问题中没有找到他们给我的东西)等等
可能这是因为没有完全理解明确的...
When erasing the "explicit" all is good, Why is this?
因为这是 explicit
应该做的:允许转换书面 显式 ,即 int i = static_cast<int>(hour);
.
您好,我写了一个从 myClass 到 int 的转换函数,反之亦然,因此我将其中一个函数设为显式。这样做时出现错误。
函数:
CircularInt(int n): CircularInt(1, 12 , n) { }
explicit operator int() const{ return current;};
错误:
CircularInt hour {1, 10 , 7 }; // current = 7
int i = hour;
错误:
error: cannot convert ‘CircularInt’ to ‘int’ in initialization int i = hour;
擦除"explicit"时一切正常,这是为什么?
p.s.
我可以提一下,我找不到完全像这样的问题,我发现很多人的问题都忘了做明确的,问什么是明确的(在那些确切的问题中没有找到他们给我的东西)等等
可能这是因为没有完全理解明确的...
When erasing the "explicit" all is good, Why is this?
因为这是 explicit
应该做的:允许转换书面 显式 ,即 int i = static_cast<int>(hour);
.