我想将一个字符传递给我的函数(fn)。我不希望将整数和短裤类型转换到其中。所以我认为我应该将值隐式转换为 MyInt(仅支持 char)然后传递给 fn。这应该可以工作 bc IIRC 在传递给函数时只允许一个 typcast(所以 char->MyInt 可以,而 int->char->MyInt 不应该)。
然而,它似乎 int 和 char 都可以工作,所以我认为另一层间接(MyInt2)可以解决它。现在它们都不能传递给 fn ... 有没有办法让我可以传递字符但不能传递 int?
#include <cstdio>
struct MyInt2{
int v;
MyInt2(char vv){v=vv;}
MyInt2(){}
};
struct MyInt{
MyInt2 v;
MyInt(MyInt2 vv){v=vv;}
};
void fn(MyInt a){
printf("%d", a.v);
}
int main() {
fn(1); //should cause error
fn((char)2); //should NOT cause error
}