首页 > 解决方案 > 有没有办法避免错误 C2039: "value": Is not a member of "boost::proto"?

问题描述

我正在使用boost::network::uri::encoded()对我的请求 url 进行编码。但是当我构建项目时,我看到了错误“错误 C2039:“值”:不是“boost::proto”的成员”。其中有四个,从boost\proto\generate.hpp(239,20);boost\proto\generate.hpp(239,53);boost\proto\generate.hpp(248,20);boost\proto 报告\generate.hpp(248,53)。这是我的测试代码:

#include <iostream>
#include <string>
#include "boost/network/uri.hpp"
using std::string;
string EncodeURL(string str)
{
    return boost::network::uri::encoded(str);
}
string DecodeURL(string str)
{
    return boost::network::uri::decoded(str);
}
int main()
{
    EncodeURL("https://test.com/a+a+a.html");
    return 0;
}

我安装boostcpp-netlib使用。我的vcpkgIDE是Visual Studio Professional 2019,操作系统是Windows 10 Professional Workstation x64 (Ver.2004)。我想知道如何避免这些错误,或者以其他方式对 UNICODE 兼容的 URL 进行编码。

标签: c++boostvisual-studio-2019vcpkgcpp-netlib

解决方案


这是boost库的一个错误。可以通过将 boost 库更新到最新版本或编辑来修复它boost\proto\generate.hpp

编辑方式boost\proto\generate.hpp

将第 95 行更改为

#if BOOST_WORKAROUND(BOOST_MSVC, < 1800)

将第 233 行更改为

#if BOOST_WORKAROUND(BOOST_MSVC, < 1800)

这是来自 boost 库的PR 。


推荐阅读