错误 C2664 无法从“初始化程序列表”转换参数 1;到“A &&” (在 VS2017 上编译,但在 VS2015 上不编译)

发布于 2025-01-09 22:21:28 字数 915 浏览 0 评论 0 原文

我对这段代码有疑问。当我使用 Visual Studio 2017 (v141) 平台工具集时可以编译它。但是,当我切换到 Visual Studio 2015 (v140) 时,出现以下错误:

Error C2664 'void std::vector>::push_back(const A &)':cannot将参数 1 从“初始化列表”转换为“A &&”

#include <vector>
#include <iostream>

struct A {
    double i;
    double j;
    int k = -1;
};
    
int main()
{
    std::vector<A> _object_rects;
    
    double i = 150;
    double j = 200;
    
    _object_rects.push_back({
        i,
        j });
    
    std::cout << "print structure: " << std::endl;
    
    std::cout << _object_rects[0].i << std::endl;
    std::cout << _object_rects[0].j << std::endl;
    std::cout << _object_rects[0].k << std::endl;
    
    system("pause");
    
    return 0;
}

感谢任何帮助。谢谢。

I have an issue with this code. I can compile it when I use Visual Studio 2017 (v141) platform toolset. However, when I switch to Visual Studio 2015 (v140), I hit this error:

Error C2664 'void std::vector<A,std::allocator<_Ty>>::push_back(const A &)': cannot convert argument 1 from 'initializer list' to 'A &&'

#include <vector>
#include <iostream>

struct A {
    double i;
    double j;
    int k = -1;
};
    
int main()
{
    std::vector<A> _object_rects;
    
    double i = 150;
    double j = 200;
    
    _object_rects.push_back({
        i,
        j });
    
    std::cout << "print structure: " << std::endl;
    
    std::cout << _object_rects[0].i << std::endl;
    std::cout << _object_rects[0].j << std::endl;
    std::cout << _object_rects[0].k << std::endl;
    
    system("pause");
    
    return 0;
}

Appreciate any help. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文