Я использую Apache Thrift в проекте.Я сгенерировал код для клиента.Когда я пытаюсь скомпилировать, я получаю набор похожих ошибок компоновщика:
undefined reference to `vtable for com::cybersecwise::thrift::ElasticFSServiceClient'
Я получил ту же ошибку при попытке реализовать конструктор с использованием разрешения области действия точки, но я смог избавиться от него, реализовавэто в файле hpp.То есть следующий код:
ElasticFSThriftClient(const string& server, int port) {
stdcxx::shared_ptr<TTransport> socket(new TSocket(server, port));
stdcxx::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
stdcxx::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
ElasticFSServiceClient client(protocol);
}
Теперь проблема в том, что я создаю экземпляр класса и снова получаю неопределенную ссылку на vtable.
Мне известно, что эта ошибка связанакогда объявления не определены для виртуальных функций.Дело в том, что, похоже, он прекрасно компилируется, пока я не создаю экземпляр объекта.
ElasticFSThriftClient elasticFsClient("localhost", 9090);