День или вечер добрый.
Скачал API одного сервиса. При попытке создать объект одного из API классов , получаю несколько ошибок :
tmp/mainwindow.o: In function `UserStoreClient':
/path_to_project/api/UserStore.h:593: undefined reference to `vtable for evernote::edam::UserStoreClient'
/path_to_project/api/UserStore.h:593: undefined reference to `vtable for evernote::edam::UserStoreClient'
tmp/mainwindow.o: In function `~UserStoreClient':
/path_to_project/api/UserStore.h:589: undefined reference to `vtable for evernote::edam::UserStoreClient'
/path_to_project/api/UserStore.h:589: undefined reference to `vtable for evernote::edam::UserStoreClient'
collect2: ld returned 1 exit status
Объявляю переменную следущим образом:
UserStoreClient userStore = UserStoreClient(userStoreProtocol);
где переменная userStoreProtocol соответственно заранее определена.
Посмотрел код класса - в нём нет виртуальных функций, которые надо было бы определить....
Собственно, сам класс UserStoreClient объявлен следущим образом:
class UserStoreIf {
public:
virtual ~UserStoreIf() {}
virtual bool checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor) = 0;
virtual void authenticate(AuthenticationResult& _return, const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret) = 0;
virtual void refreshAuthentication(AuthenticationResult& _return, const std::string& authenticationToken) = 0;
virtual void getUser(evernote::edam::User& _return, const std::string& authenticationToken) = 0;
virtual void getPublicUserInfo(PublicUserInfo& _return, const std::string& username) = 0;
};
class UserStoreClient : virtual public UserStoreIf {
public:
UserStoreClient(boost::shared_ptr<apache::thrift::protocol::TProtocol> prot) :
piprot_(prot),
poprot_(prot) {
iprot_ = prot.get();
oprot_ = prot.get();
}
UserStoreClient(boost::shared_ptr<apache::thrift::protocol::TProtocol> iprot, boost::shared_ptr<apache::thrift::protocol::TProtocol> oprot) :
piprot_(iprot),
poprot_(oprot) {
iprot_ = iprot.get();
oprot_ = oprot.get();
}
boost::shared_ptr<apache::thrift::protocol::TProtocol> getInputProtocol() {
return piprot_;
}
boost::shared_ptr<apache::thrift::protocol::TProtocol> getOutputProtocol() {
return poprot_;
}
bool checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor);
void send_checkVersion(const std::string& clientName, const int16_t edamVersionMajor, const int16_t edamVersionMinor);
bool recv_checkVersion();
void authenticate(AuthenticationResult& _return, const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret);
void send_authenticate(const std::string& username, const std::string& password, const std::string& consumerKey, const std::string& consumerSecret);
void recv_authenticate(AuthenticationResult& _return);
void refreshAuthentication(AuthenticationResult& _return, const std::string& authenticationToken);
void send_refreshAuthentication(const std::string& authenticationToken);
void recv_refreshAuthentication(AuthenticationResult& _return);
void getUser(evernote::edam::User& _return, const std::string& authenticationToken);
void send_getUser(const std::string& authenticationToken);
void recv_getUser(evernote::edam::User& _return);
void getPublicUserInfo(PublicUserInfo& _return, const std::string& username);
void send_getPublicUserInfo(const std::string& username);
void recv_getPublicUserInfo(PublicUserInfo& _return);
protected:
boost::shared_ptr<apache::thrift::protocol::TProtocol> piprot_;
boost::shared_ptr<apache::thrift::protocol::TProtocol> poprot_;
apache::thrift::protocol::TProtocol* iprot_;
apache::thrift::protocol::TProtocol* oprot_;
};
Подскажите, как таки избавиться от этих ошибок