1
我試圖在C++中實現享元設計。這是我迄今爲止所擁有的。你怎麼能看到共享指針是否相等
std::unordered_map<std::pair<Gdiplus::Color, float>, std::shared_ptr<Gdiplus::Pen>> mymap;
std::shared_ptr<Gdiplus::Pen> getPen(Gdiplus::Color const & color, float width)
{
std::pair<Gdiplus::Color,float> input;
input = std::make_pair(color, width);
std::unordered_map<std::pair<Gdiplus::Color, float>, std::shared_ptr<Gdiplus::Pen>>::const_iterator got = mymap.find (input);
if (got == mymap.end())
{
auto pen = std::make_shared<Gdiplus::Pen>();
pen->SetColor(color);
pen->SetWidth(width);
//std::pair<Gdiplus::Color,float> input2;
mymap.insert(std::make_pair(input, pen));
return pen;
}
else
{
if (std::shared_ptr<Gdiplus::Pen> m_pen = got->second.get())
return m_Pen;
}
}
我的問題是在else語句中。我試圖找出如果兩個指針是一樣的,但我得到一個錯誤說在這一行
cannot convert from 'Gdiplus::Pen *' to 'std::tr1::shared_ptr<_Ty>'
哦謝謝@Tushar –