Thrift & Boost - имеет инициализатор, но неполный тип - PullRequest
0 голосов
/ 26 июня 2018

Я сейчас работаю с экономными примерами: Нажмите

Следующий созданный мной тестовый код не компилируется.

#include <thrift/transport/TSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/protocol/TBinaryProtocol.h>

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

int main(int argc, char **argv) {
    boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
    boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
    boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));

    return 0;
}

При попытке компиляции возникает следующее исключение:

/opt/JetBrains/apps/CLion/ch-0/181.5087.36/bin/cmake/bin/cmake --build /home/user/Documents/Projects/VerteilteSysteme/Insurer/cmake-build-debug --target Insurer -- -j 2
Scanning dependencies of target Insurer
[ 50%] Building CXX object CMakeFiles/Insurer.dir/main.cpp.o
/home/user/Documents/Projects/VerteilteSysteme/Insurer/main.cpp: In function ‘int main(int, char**)’:
/home/user/Documents/Projects/VerteilteSysteme/Insurer/main.cpp:10:38: error: variable ‘boost::shared_ptr<apache::thrift::transport::TSocket> socket’ has initializer but incomplete type
     boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
                                      ^
/home/user/Documents/Projects/VerteilteSysteme/Insurer/main.cpp:11:44: error: variable ‘boost::shared_ptr<apache::thrift::transport::TTransport> transport’ has initializer but incomplete type
     boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
                                            ^
/home/user/Documents/Projects/VerteilteSysteme/Insurer/main.cpp:12:42: error: variable ‘boost::shared_ptr<apache::thrift::protocol::TProtocol> protocol’ has initializer but incomplete type
     boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
                                          ^
make[3]: *** [CMakeFiles/Insurer.dir/build.make:63: CMakeFiles/Insurer.dir/main.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:68: CMakeFiles/Insurer.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/Insurer.dir/rule] Error 2
make: *** [Makefile:118: Insurer] Error 2

Я дважды проверил, что в моей системе правильно установлены boost и thrift. (ArchLinux x64). В чем причина этой ошибки?

1 Ответ

0 голосов
/ 27 июня 2018
#include <boost/shared_ptr.hpp>

может быть, это объявлено заранее где-то в заголовках комиссионных?

...