2011-12-08 9 views
1

への参照を渡す私はQPixmapへの参照と思われるものを渡すしようとすると、私はエラーを取得:はQPixmapのctorの

error: no matching function for call to ‘QGraphicsScene::addItem(QGraphicsPixmapItem (&)(QPixmap))’ 

問題は、このリファレンスはどこから来ている私にはわからないということです私はiteratorから来ていると推測していますが、

void MainWindow::addItems(std::map<std::string, QString> * items) 
{ 
    std::map<std::string, QString>::const_iterator current; 

    for(current = items->begin(); current != items->end(); ++current) 
    { 
     QString cur = current->second; 
     QGraphicsPixmapItem item(QPixmap(cur)); 
     _scene->addItem(item); 

    } 

} 

この場合、iteratorの参照を解除する方法はありますか?そうでなければ、私は間違っているのですか?

あなたがC++ 'S 『最も厄介な解析』として知られているもののファウルを落ちたんだ

int main(int argc, char *argv[]) 
{ 
    std::map<std::string, QString> * items; 

    items->insert(std::pair<std::string, QString>("ozone", ":/images/ozone_sprite.png")); 

    QApplication a(argc, argv); 
    MainWindow window; 
    window.addItems(items); 
    window.show(); 

    delete items; 

    return a.exec(); 
} 

答えて

1

それを呼び出すコード。具体的には、この:

QGraphicsPixmapItem item(QPixmap(cur)); 

はタイプQPixmapの単一のパラメータを取り、QGraphicsPixmapItemを返すitemという関数を宣言します。この問題を解決するには、書き込み:

QPixmap temp(cur); 
QGraphicsPixmapItem item(temp); 

こちらをご覧ください:

http://en.wikipedia.org/wiki/Most_vexing_parse

を限りエラーが行くように、あなたがタイプQGraphicsPixmapItem (&)(QPixmap)の引数でaddItemを呼び出すようにしようとしていることに注意してください - それはあります関数への参照はQPixmapで、QGraphicsPixmapItem(これは式itemの型です)を返します。

関連する問題