gsoap 及其工具 wsdl2h 和 soapcpp2 为我提供了一个包含以下内容的 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++ 代码......我想征求任何建议,下一步该尝试什么。我的类不是派生类,例如是什么让我想知道。