Я пытаюсь реализовать две службы Windows, которые каждый реализует, это собственный интерфейс gSoap, и оба являются клиентами и серверами каждого интерфейса. Поэтому моя проблема заключается в том, что я использую один и тот же тип данных в обоих интерфейсах (класс с членами) и генерирую код С++ с помощью опции soapcpp2.exe -q, которая создаст два разных пространства имен, это прекрасно, и это работает, но проблема заключается в том, что тип данных, который должен быть равен в обоих интерфейсах, теперь отличается из-за разделения пространства имен, но если я удалю пространства имен, у меня будут конфликты, потому что общий тип данных имеет одинаковое имя в обоих интерфейсах.
"Проблема:
interface 1:
---
>class xsd__Address
{
char *email;
char *url;
};
>int ns1__getAddress(xsd__Address& ret);
---
interface 2:
---
>class xsd__Address
{
char *email;
char *url;
};
>int ns2__setAddress(xsd__Address& ret);
---
после определения каждого заголовка я скомпилируйте его с помощью soapcpp2.exe примерно так:
soapcpp2.exe -qintf1 -n xxxx//для интерфейса 1
soapcpp2.exe -qintf2 -n xxxx//для интерфейса 2
поэтому, когда в моем проекте используется оба интерфейса (интерфейс 1 и интерфейс 2), когда мне нужно что-то вроде этого:
intf1::Interface1 int1;
int1.endpoint="xxx";
intf1::ns__Address address;
int1.ns1__getAddress(address);
intf2::Interface1 int2;
int2.endpoint="xxx";
int2.ns2_setAddress(address); //this don't compile like i was expecting because to the compiler they are not the same object (and it is wright...)
Вопросы:
Возможно ли иметь общие типы данных между двумя или более интерфейсами? Да? как это достигается?
Если это не лучшее решение для реализации этого?