gpt4 book ai didi

c++ - 无法编译代码,因为它在 C++11 中已弃用

转载 作者:太空宇宙 更新时间:2023-11-04 15:55:49 25 4
gpt4 key购买 nike

我有一个用 ns-3 编译的代码,但是当我尝试编译它们时遇到了一些问题。我认为原因可能是某些函数在 C++11 中已被弃用。但是不知道怎么修改代码。

这是我认为应该修改的代码:

m_sendBuffer.erase(
std::remove_if(
m_sendBuffer.begin(), m_sendBuffer.end(),
std::bind2nd(std::ptr_fun(DsrSendBuffer::IsEqual), dst)
),
m_sendBuffer.end()
);

这里是错误:

../src/dsr/model/dsr-rsendbuff.cc:102:55: error: 'ptr_fun<ns3::dsr::DsrSendBuffEntry, ns3::Ipv4Address, bool>' is deprecated [-Werror,-Wdeprecated-declarations]
std::bind (std::ptr_fun (DsrSendBuffer::IsEqual), dst)), m_sendBuffer.end ());

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1115:1: note: 'ptr_fun<ns3::dsr::DsrSendBuffEntry, ns3::Ipv4Address, bool>' has been explicitly marked deprecated here
_LIBCPP_DEPRECATED_IN_CXX11 inline _LIBCPP_INLINE_VISIBILITY

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1101:39: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX11'
define _LIBCPP_DEPRECATED_IN_CXX11 _LIBCPP_DEPRECATED

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:1090:48: note: expanded from macro '_LIBCPP_DEPRECATED'
define _LIBCPP_DEPRECATED __attribute__ ((deprecated))

最佳答案

看起来他们确实使用了已弃用的 API,但您仍然可以通过将弃用警告视为警告来编译它。将此添加到您的编译器选项:

-Wno-error=deprecated-declarations

如果您想要升级代码,您可以改为执行此 lambda:

m_sendBuffer.erase(
std::remove_if(
m_sendBuffer.begin(), m_sendBuffer.end(),
[&dst](auto const& buf) { return DsrSendBuffer::IsEqual(buf, dst); }
),
m_sendBuffer.end()
);

关于c++ - 无法编译代码,因为它在 C++11 中已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290892/

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