gpt4 book ai didi

c++ - VSTGUI 4.0 - 错误 C2664 : 'std::make_pair'

转载 作者:行者123 更新时间:2023-11-30 02:50:01 25 4
gpt4 key购买 nike

我正在尝试使用 vstgui 4.0 为 vst 插件制作一个非常简单的图形用户界面。我正在使用 Visual Studio 2012 Express。当我构建它时,我从其中一个 sdk 文件中收到错误。错误是:

error C2664: 'std::make_pair' : cannot convert parameter 1 from 'const VSTGUI::CViewAttributeID' to 'VSTGUI::CViewAttributeID &&' c:\sdks\vst3 sdk\vstgui4\vstgui\lib\cview.cpp 691 1 VST

它来自 cview.cpp 中的“attributes.insert...”行:

bool CView::setAttribute (const CViewAttributeID id, const int32_t inSize, const void* inData)
{
if (inData == 0 || inSize <= 0)
return false;
CViewAttributeConstIterator it = attributes.find (id);
if (it != attributes.end ())
it->second->updateData (inSize, inData);
else
attributes.insert (std::make_pair<CViewAttributeID, CViewAttributeEntry*> (id, new CViewAttributeEntry (inSize, inData)));
return true;
}

我该怎么做才能解决这个问题?有什么方法可以抑制这个错误吗?

最佳答案

make_pair 发生了重大变化在 C++11 中错误使用时:如果您指定参数类型,则它在 C++11 中的含义与 C++03 中的不同。

要解决此问题,请更改 std::make_pair将参数类型指定为 std::pair别管其他一切。

或者,删除 make_pair 的类型参数,因为你基本上不应该通过它们。但是,如果旧代码做了一些古怪的事情,这可以改变事情的工作方式(我认为在上述情况下它是安全的)。

然而,第一个解决方案将更接近地模仿 C++11 中的 C++03 行为,以防他们做了一些奇怪的事情,这是最安全的。

std::make_pair没有<>在他们之后你应该一个人离开。

此重大更改与 C++11 中的完美转发效率改进和对 move 的支持有关只有类型。

关于c++ - VSTGUI 4.0 - 错误 C2664 : 'std::make_pair' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20821192/

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