C ++通过函数</rect>传递std :: shared_ptr <rect>

时间:2014-04-02 20:49:02

标签: c++ rect

void PlayerHealthBar::SetSourceRect(std::shared_ptr<RECT> sourceRect)
{
    this->sourceRect = sourceRect;
}

.CPP文件我试图从

设置源矩形
playerHealthBar->SetSourceRect(std::shared_ptr<RECT>(0.0, 0.0, 0.0, 0.0));

错误发生在shared_ptr<RECT>上的.cpp文件中:

8   IntelliSense: no instance of constructor "std::shared_ptr<_Ty>::shared_ptr [with _Ty=RECT]" matches the argument list
            argument types are: (double, double, double, double)    ...\Ship.cpp    84

我不确定这意味着什么。感谢。

1 个答案:

答案 0 :(得分:2)

您应该为std::shared_ptr的构造函数提供动态分配的指针。或者,你也可以,我推荐它,使用&#34;工厂功能&#34; std::make_shared,如下:

playerHealthBar->SetSourceRect(std::make_shared<RECT>(0.0, 0.0, 0.0, 0.0));
//                                  ^^^^^^^^^^^

当然假设RECT在其中一个构造函数中接受4个双字面可转换类型。