C ++ передача std :: shared_ptr & lt; RECT & gt; через функцию

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));

Ошибка в файле .cpp на shared_ptr<RECT> говоря:

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

Я не уверен, что это значит. Благодарю.

0

Решение

Вы должны предоставить динамически распределенный указатель на std::shared_ptrконструктор. Кроме того, вы также можете, и я бы порекомендовал, использовать «заводскую функцию» std::make_shared, следующее:

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

Конечно при условии RECT принимает 4 двойных литеральных типа в одном из своих конструкторов.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]