当前位置:  开发笔记 > 编程语言 > 正文

如何将其他类型的默认参数传递给参数?

如何解决《如何将其他类型的默认参数传递给参数?》经验,为你挑选了1个好方法。

让我说我有这个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'

现在,我理解错误,但仍然 - 我该如何解决这个问题?我知道我需要以某种方式投射intMyStruct,但两者都是

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)



1> Lightness Ra..:

您可以默认初始化POD,因此:

void MyFunc (int x, MyStruct myStruct = MyStruct());

我想你正在尝试使用0因为它是一个整数,它是一个空指针常量.但是你没有在这里使用指针.使用0是错误的方法.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有