Я сейчас создаю систему графического интерфейса для своего игрового движка.Я попытался создать общий указатель для одного из компонентов "GUImovingbar", используя std::make_shared()
, но получил следующую ошибку при компиляции
'std :: shared_ptr <_Other> std :: make_shared (_Types &&...) ': не удалось вывести аргумент шаблона для' _Types && ... 'из' списка инициализаторов '
Однако, когда я использовал те же самые входные данные для создания нового указателя, он компилировалсяхорошо без ошибок.Это показалось мне немного странным.Что мне здесь не хватает?
Код с использованием std::make_shared()
:
this->playerhullbar = std::make_shared<GUImovingbar>(
"right",
{ 50,hully }, //scoords
globalguitextures[findStringSrdPointerPairVectElement(globalguitextures, "barbackground")].second,
{ 0,static_cast<double>(maxplayerhullint),static_cast<double>(maxplayerhullint) },
{ 50,hully,250, hully,2,100 },//for int vector input ("bsbebdbc"): 1 barxstart, 2 y , 3 barendx, 4 y, 5 distance between bars in px, 6 bar count
{ 0,255,0 },
bartextvect
);
Вышеперечисленные причины ошибки:
'std :: shared_ptr <_Other> std:: make_shared (_Types && ...) ': не удалось вывести аргумент шаблона для «_Types && ...» из «списка инициализаторов»
Следующее не вызывает ошибок вообще:
std::shared_ptr<GUImovingbar> newptr(new GUImovingbar(
"right",
{ 50,hully}, //scoords
globalguitextures[findStringSrdPointerPairVectElement(globalguitextures, "barbackground")].second,
{ 0,static_cast<double>(maxplayerhullint),static_cast<double>(maxplayerhullint) },
{ 50,hully,250, hully,2,100 },//for int vector input ("bsbebdbc"): 1 barxstart, 2 y , 3 barendx, 4 y, 5 distance between bars in px, 6 bar count
{ 0,255,0 },
bartextvect)
);
this->playerhullbar = newptr;