2017-05-31 31 views
0

QCPGraphをQCustomPlot FrameWorkからstd::multimapに挿入する必要があるプログラムで作業しています。注:私はまだC++にはかなり新しいです。しかし、私はこれを動作させることはできません。それは本当にイライラしています。ここでマルチマップC++にQCustomPlot :: QCPGraphを挿入できません

は私のコードです:

ui->customPlot->addGraph();   

/* 
    fill graph with some data 
*/ 

QCPGraph *graph = ui->customPlot->graph(0); 

std::multimap<int, std::pair<std::vector<double>, QCPGraph>, _comparator> myMap; 

//just for demo 
std::vector<double> vec; 
vec.at(0) = 2.2; 

myMap.insert(std::make_pair(1, std::make_pair(vec, graph))); 

最後の行は、私に次のコンパイラエラーを与える:

C:\path\mainwindow.cpp:178: Error: no matching function for call to 'std::multimap<int, std::pair<std::vector<double>, QCPGraph>, MainWindow::__comparator>::insert(std::pair<int, std::pair<std::vector<double>, QCPGraph*> >)' 
    myMap.insert(std::make_pair(1, std::make_pair(vec, graph))); 
                   ^

C:\Qt\Tools\mingw530_32\i686-w64-mingw32\include\c++\bits\stl_multimap.h:524: Error: no type named 'type' in 'struct std::enable_if<false, void>' 
     template<typename _Pair, typename = typename 
           ^

私はそれはおそらくポインタや種類に関係していますが、私は単に」することができます知っていますそれを理解する。私は&graph(*graph)を挿入しようとしましたが、いずれも失敗しました。助けてください。

答えて

0

あなたのコンテナは、次のとおりです。

std::multimap<int, std::pair<std::vector<double>, QCPGraph>> myMap; 

だから、そのVALUE_TYPEがある:

std::pair<const int, std::pair<std::vector<double>, QCPGraph>> 

ですから、持っているとき:

QCPGraph *graph = ui->customPlot->graph(0); 

あなたはこのようにそれを挿入する必要があります。

myMap.insert(std::make_pair(1, std::make_pair(vec, *graph))); 

またはC++ 11で:

myMap.emplace(1, std::make_pair(vec, *graph)); 

しかし、私はあなたが実際にそれへのポインタを格納する必要がありますので、グラフは、QCustomPlotによって所有されることを意図していると思う:

std::multimap<int, std::pair<std::vector<double>, QCPGraph*>> myMap; 
myMap.emplace(1, std::make_pair(vec, graph)); 
+0

ありがとう!私はそれが本当にばかげた過ちであることを知っていた! :O – masterBroesel