让我说我有这个prog.cc文件:
struct MyStruct { unsigned int X : 2; unsigned int Y : 2; unsigned int Spare : 28; }; void MyFunc (int x, MyStruct myStruct = 0); int main () { MyStruct myStr; myStr.X = 1; myStr.Y = 0; MyFunc(6); } void MyFunc (int x, MyStruct myStruct) { x += 10; }
使用GCC 4.4.7编译时,出现此错误:
prog.cc:7:错误:'MyStruct myStruct'的默认参数类型为'int'
现在,我理解错误,但仍然 - 我该如何解决这个问题?我知道我需要以某种方式投射int
到MyStruct
,但两者都是
MyStruct myStruct = (MyStruct)0
和
MyStruct myStruct = static_cast0
失败了:
prog.cc:7:错误:没有匹配函数来调用'MyStruct :: MyStruct(int)'
prog.cc:1:注意:候选人是:MyStruct :: MyStruct()
prog.cc:1:注意:MyStruct :: MyStruct(const MyStruct&)
如何简单地初始化我的用户定义的struct,作为函数参数的默认参数传递?
(以下是示例代码:http: //melpon.org/wandbox/permlink/izWCnBXl9PGnmm0l)
您可以默认初始化POD,因此:
void MyFunc (int x, MyStruct myStruct = MyStruct());
我想你正在尝试使用0
因为它是一个整数,它是一个空指针常量.但是你没有在这里使用指针.使用0
是错误的方法.