2016-09-06 72 views
0

我有一个模式结构,例如如何实例化模式对象?

class sw_Type 
{ 
char *Id; /* required attribute */ 
struct soap *soap; /* transient */ 
}; 

我创建使用

soap_instantiate__sw_Type(....) 

这个对象,但我不明白我怎么分配char条目。我想我应该找到一个例程,接受soap返回char *。我应该使用Id = (char *) (soap_malloc(_soapInst, sz * sizeof(char)))

如果Idchar **,我该怎么做类似的分配?

+1

的例子有什么魔力设置'字符*'指向字符串。 'Id'只是一个字符串。要将其设置为另一个字符串'str',请使用'Id = soap_malloc(_soapInst,strlen(str)+ 1)',然后使用'strcpy(Id,str)'。或者更好的是,使用文档http://www.genivia.com/doc/databinding/html/#memory中讨论的'Id = soap_strdup(_soapInst,str)'。不知道这是你的问题吗? –

回答

0

您应该简单地按照下面的步骤操作,并对char数组的长度使用define。

char * Id = (char *)soap_malloc(soap, ID_LEN); 

在你的例子中不需要使用sizeof。但是如果你想分配一个对象列表,那么你应该使用Nof items x sizeof(struct ..)

关于char**,你可以使用像下面

char** arguments_push = (char**) soap_malloc(soap, sizeof(char*)*ARGS_NUM);