如何给含有结构体参数的函数提供默认值

panyfx 发布于 2012/08/31 11:23
阅读 2K+
收藏 0

如有如下结构:

struct A{

   int a;

   int b;

};

int function(int a, A astruct);

那么如何给astruct提供默认值呢,谢谢你的关注与回答!

 

 

加载中
0
billzheng
billzheng

如果你真的要设置默认struct参数

这个方案如何:

struct  A
{
        int a;
        int b;
};

static const A static_a = {1,2};


int funct(int i, A a=static_a)
{
        printf("%d %d \n", a.a, a.b);
        return 0;
}

panyfx
panyfx
谢谢你,结合你的帮助,我把参数列表中的结构体去掉了,改为分别传递结构体的变量,后在函数体中赋值,这样的话,参数列表变长了,不过功能还是可以实现的,谢谢你的热心帮助!
0
李海林
李海林
可以 写构造函数
0
billzheng
billzheng

提供构造函数

struct A{
   A()
   : a(0),b(0)
   {
   }
   int a;
   int b;

};

 

 

panyfx
panyfx
谢谢你的热心回答,我现在的情况是结构体是别人定义好的,我只是拿来用的,他没有提供构造函数,我最好也不应该改动他的结构体吧,最后我提交的只是我写的,该怎么办?多谢!
0
billzheng
billzheng

那你把functioncan参数改为引用, 如果你是要传入 struct,function应该这样定义

int function(int a, const A& astruct);

然后这样调用

int a = 0;
A a_struct;
memset(&a_struct, 0x0, sizeof(A));
function(a,a_struct);


panyfx
panyfx
谢谢你啊,我要实现的是在函数声明的时候给函数的结构体参数提供一个默认值,如function(int a, A a_struct={1,2})类似这样的,但是直接这样写不行的,不知道怎么写正确。谢谢你再次热心的回答,谢谢!
返回顶部
顶部