2015-05-21 2 views
2

Так я собираюсь попробовать простой пример Eureqa API в Xcode, как показано на: https://code.google.com/p/eureqa-api/Невозможно скомпилировать программу с помощью подталкивание и Eureqa в C++

Однако, когда я пытался скомпилировать его, кажется, ошибка в access.hpp форсирования заголовков в этой строке: ...

{ 
    // note: if you get a compile time error here with a 
    // message something like: 
    // cannot convert parameter 1 from <file type 1> to <file type 2 &> 
    // a likely possible cause is that the class T contains a 
    // serialize function - but that serialize function isn't 
    // a template and corresponds to a file type different than 
    // the class Archive. To resolve this, don't include an 
    // archive type other than that for which the serialization 
    // function is defined!!! 
    t.serialize(ar, file_version); 
} 

... с сообщением: Ни один член с именем 'сериализации' в 'станд :: _ 1 :: пара'

Что мне делать в ord er исправить это?

+0

Спасибо! Я пробовал это, а затем эта ошибка появляется в утилите.hpp: 'ar & boost :: serialization :: make_nvp (« first », const_cast (p.first)); ar & boost :: serialization :: make_nvp («second», p.second); «говоря: ни один член с именем« make_nvp »в пространстве имен« boost :: serialization » –

+0

Aha. Я вижу, вы ответили. Как вы нашли, вам нужно прокомментировать ответ, на который вы отвечаете. В качестве альтернативы/дополнительно вы можете использовать явную адресацию стиля '@ JusufAurumMerukh' (только если она добавляет значение) – sehe

ответ

0

Похоже, вы просто хотите, чтобы включить заголовок

#include <boost/serialization/utility.hpp> 

, который определяет сериализацию std::pair<>.

EDIT После комментария (и прибытия домой) я воспроизвел проблему с linux с boost 1.58. Действительно, редактирование eureqa/implementation/connection_impl.h включить

#include <boost/serialization/utility.hpp> 
#include <boost/serialization/nvp.hpp> 

фиксирует это:

g++ basic_client.cpp \ 
    -I/home/sehe/custom/boost/ \ 
    -I../../ \ 
    -c -o basic_client.o 
g++ basic_client.o \ 
    /home/sehe/custom/boost/stage/lib/libboost_system.a \ 
    /home/sehe/custom/boost/stage/lib/libboost_serialization.a \ 
    /home/sehe/custom/boost/stage/lib/libboost_date_time.a \ 
    /home/sehe/custom/boost/stage/lib/libboost_thread.a \ 
    -lpthread \ 
    -o basic_client 

::_1, скорее всего, артефакт реализации библиотеки (LibC++) с использованием встроенных пространств имен для управления версиями.

+0

Спасибо! Я пробовал это, а затем эта ошибка появляется в утилите.hpp: 'ar & boost :: serialization :: make_nvp (« first », const_cast (p.first)); ar & boost :: serialization :: make_nvp («second», p.second); «говоря: ни один член с именем« make_nvp »в пространстве имен« boost :: serialization » –

+1

Ну ... включают' boost/serialization/nvp .hpp' тоже ... – sehe

+0

Я сделал, и ошибка все еще сохраняется. –

Смежные вопросы