如何实例化架构对象?

时间:2016-09-06 14:12:27

标签: c++ xml soap schema gsoap

我有一个架构结构,例如

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 **,我将如何进行类似的分配?

2 个答案:

答案 0 :(得分:1)

您应该执行以下操作,并使用define作为char数组的长度。

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);

答案 1 :(得分:1)

要在thahgr's answer上扩展一下,如果您需要实例化一个Id = (char**) soap_malloc(soap, sizeof(char*) * n); 成员,则可以像他们所说的那样进行:

char*

然后要实例化char**中的每个单独的soap_malloc(),您将像以前一样使用Id[0] = (char*) soap_malloc(soap, n0); Id[1] = (char*) soap_malloc(soap, n1); // etc.

soap

完成此soap_malloc()上下文后,调用soap_free(soap)时将释放使用soap_instantiate__T()分配的所有内存。

(同样,您使用soap_instantiate__sw_Type()分配的任何C ++对象(例如soap_destroy(soap),在调用char**时都会被释放)


注意:如果您正在使用sw_Type,并且希望__size可以序列化(即可以作为字符串输出),您还需要在Id成员下方添加一个class sw_Type { char **Id; /* required attribute */ int __size; /* required attribute */ struct soap *soap; /* transient */ }; 成员:

__size

有关const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.label({ label: 'MY-SILLY-APP' }), winston.format.timestamp(), winston.format.metadata({ fillExcept: ['message', 'level', 'timestamp', 'label'] }), winston.format.colorize(), winston.format.printf(info => { let out = `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`; if (info.metadata.error) { out = out + ' ' + info.metadata.error; if (info.metadata.error.stack) { out = out + ' ' + info.metadata.error.stack; } } return out; }), ), transports: [ new winston.transports.Console() ] }); logger.info('running'); try { throw new Error('failed'); } catch (err) { logger.error('failing', { error: err }); } logger.info('stopping'); 的更多信息,请参见One-dimensional dynamic SOAP-encoded arrays上的gSOAP文档。