ツール wsdl2h および soapcpp2 を使用した gsoap は、以下を含む soapStub.h ファイルを提供してくれました。
class SOAP_CMAC ns2__SOAPKunden
{
public:
std::string *adresszusatz;
// ...
public:
virtual int soap_type() const { return 7; }
// ...
ns2__SOAPKunden() : adresszusatz(NULL), x(NULL) { } // left out all member init.
virtual ~ns2__SOAPKunden() { }
};
このクラスを使用して、Informix DB からのデータをオブジェクトに取り込む小さなアプリから始めます。
しかし、正常にコンパイルするには、すべての仮想のものを残す必要があります-このエラーとサブクラスでの仮想メンバーの使用に関する多くの投稿を見つけました-そうしないと、
main.o: In function `ns2__SOAPKunden::ns2__SOAPKunden()':
main.cpp:(.text._ZN15ns2__SOAPKundenC1Ev[ns2__SOAPKunden::ns2__SOAPKunden()]+0xf): undefined reference to `vtable for ns2__SOAPKunden'
main.o: In function `ns2__SOAPKunden::~ns2__SOAPKunden()':
main.cpp:(.text._ZN15ns2__SOAPKundenD1Ev[ns2__SOAPKunden::~ns2__SOAPKunden()]+0x13): undefined reference to `vtable for ns2__SOAPKunden'
collect2: ld returned 1 exit status
何年にもわたるスクリプト作成の後で、C++ コードを理解するのが非常に難しいことだけは認めます... 次に何を試すべきかアドバイスを求めたいと思います。私のクラスは派生クラスではありません。たとえば、不思議に思うのはそのためです。