gpt4 book ai didi

c++ - list.push_back 和 std::shared_ptr 有问题

转载 作者:行者123 更新时间:2023-11-30 01:46:34 35 4
gpt4 key购买 nike

这个小片段给我带来了一些麻烦。我只是不知道它有什么问题:

m_buttons.push_back(
std::shared_ptr<std::pair<std::shared_ptr<ShinyButton>, BUTTONTYPE>>(
std::make_pair(
std::shared_ptr<ShinyButton>(new ShinyButton(0, 0, 0, 0, "menue_1", "menue_1_glow", 55, 55, 7, 7)),
START
)
)
);

列表定义如下:

std::list<std::shared_ptr<std::pair<std::shared_ptr<ShinyButton>,BUTTONTYPE>>>

编译器给出的错误是:

No constructer matches Argument list.

最佳答案

您正在尝试初始化 std::shared_ptr<std::pair<X, Y>>std::make_pair .这就像初始化一个 int *int .也许你打算使用 make_shared :

m_buttons.push_back(
std::make_shared<std::pair<std::shared_ptr<ShinyButton>, BUTTONTYPE>>(
std::make_pair(
std::shared_ptr<ShinyButton>(new ShinyButton(0, 0, 0, 0, "menue_1", "menue_1_glow", 55, 55, 7, 7)),
START
)
)
);

事实上,用make_shared ,你甚至不需要 make_pair调用:

m_buttons.push_back(
std::make_shared<std::pair<std::shared_ptr<ShinyButton>, BUTTONTYPE>>(
std::shared_ptr<ShinyButton>(new ShinyButton(0, 0, 0, 0, "menue_1", "menue_1_glow", 55, 55, 7, 7)),
START
)
);

关于c++ - list.push_back 和 std::shared_ptr 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992362/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com