【发布时间】:2012-07-11 10:16:02
【问题描述】:
我想将一个字符传递给我的函数 (fn)。我不希望将整数和短裤类型转换到其中。所以我认为我应该将值隐式转换为 MyInt(仅支持 char)然后传递给 fn。这应该可以工作,因为 IIRC 在传递给函数时只允许一个类型转换(所以 char->MyInt 可以,而 int->char->MyInt 不应该)。
但是它看起来 int 和 char 都可以工作,所以我认为另一层间接(MyInt2)可以解决它。现在它们都不能传递给 fn... 有没有一种方法可以让我传递 chars 但不能传递 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
}
【问题讨论】:
-
您是否在寻找编译或运行时错误?
标签: c++