2016-05-13 102 views
0

在試圖通過official MongoDB C++ tutorial工作時,我遇到了一個我不明白的錯誤。下面的代碼是正確的,從他們的網站拉:BSON類型和std :: chrono

#include <chrono> 

#include <bsoncxx/builder/stream/document.hpp> 
#include <bsoncxx/types.hpp> 

#include <mongocxx/client.hpp> 
#include <mongocxx/instance.hpp> 
#include <mongocxx/uri.hpp> 

using bsoncxx::builder::stream::document; 
using bsoncxx::builder::stream::open_document; 
using bsoncxx::builder::stream::close_document; 
using bsoncxx::builder::stream::open_array; 
using bsoncxx::builder::stream::close_array; 
using bsoncxx::builder::stream::finalize; 

int main() 
{ 
//... 
    bsoncxx::document::value restaurant_doc = document{} 
     << "address" << open_document << "street" 
//... 
     << bsoncxx::types::b_date{std::chrono::milliseconds{12323}} 
//... 
     << "restaurant_id" << "41704620" 
     << finalize; 

我從GCC(V6.1.1)得到了錯誤的樣子:

insert.cpp: In function ‘int main()’: 
insert.cpp:36:65: error: no matching function for call to  ‘bsoncxx::v_noabi::types::b_date::b_date(<brace-enclosed initializer list>)’ 
    << bsoncxx::types::b_date{std::chrono::milliseconds{12323}} 

In file included from /usr/include/bsoncxx/v_noabi/bsoncxx/builder/core.hpp:26:0, 
       from /usr/include/bsoncxx/v_noabi/bsoncxx/builder/stream/document.hpp:17, 
       from insert.cpp:3: 
/usr/include/bsoncxx/v_noabi/bsoncxx/types.hpp:306:14: note: candidate: bsoncxx::v_noabi::types::b_date::b_date(const time_point&) 
    explicit b_date(const std::chrono::system_clock::time_point& tp) 
       ^~~~~~ 

我試圖初始化chrono::milliseconds用括號代替括號,但後來海灣合作委員會只是更加清楚地抱怨可用的bsoncxx::types::b_date構造函數與我提供的類型不匹配。我也嘗試給它一個chrono::system_clock::time_point用相同的數字初始化,每個MongoDB C++11 Driver docs,但我仍然有一個不匹配。

所以......我不確定爲什麼教程材料不適合我,也不完全理解C++的輸入,模板或支撐初始值設定項列表。雖然我很樂意閱讀特定於我遇到的問題的教程,但我甚至不知道要爲Google提供什麼。知識鴻溝太廣泛。 = P

因此,任何幫助將不勝感激。 =)

回答

1

喜歡的東西

bsoncxx::types::b_date { std::chrono::system_clock::time_point { 
    std::chrono::milliseconds { 12323 } } } 

bsoncxx::types::b_date { std::chrono::system_clock::now() + 
    std::chrono::milliseconds { 12323 } } 

應該有希望的工作。 (第一個是相對於系統時鐘的紀元,這可能是Linux系統上的Unix紀元1970年1月1日00:00:00)。

+0

那麼,這工作!但是現在,程序在嘗試連接數據庫時會引發異常。可愛...希望我可以回到功能教程的C驅動程序。 – musasabi

相關問題