gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:47 24 4
gpt4 key购买 nike

假设我有这个 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: error: default argument for 'MyStruct myStruct' has type 'int'

现在,我明白了这个错误,但仍然 - 我该如何解决这个问题?我知道我需要以某种方式从 int 转换为 MyStruct,但两者都是

MyStruct myStruct = (MyStruct)0

MyStruct myStruct = static_cast<MyStruct>0

失败了:

prog.cc:7: error: no matching function for call to 'MyStruct::MyStruct(int)'

prog.cc:1: note: candidates are: MyStruct::MyStruct()

prog.cc:1: note: MyStruct::MyStruct(const MyStruct&)

我怎样才能简单地初始化我的用户定义的结构,作为函数参数的默认参数传递?

(这里是示例代码: http://melpon.org/wandbox/permlink/izWCnBXl9PGnmm0l )

最佳答案

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

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

我猜您正在尝试使用 0,因为它不仅是一个整数,而且还是一个空指针常量。但是您在这里没有使用指针。使用 0 是错误的方法。

关于c++ - 如何将其他类型的默认参数传递给参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com