【问题标题】:initialize integer array inline when passing arguments to a method将参数传递给方法时内联初始化整数数组
【发布时间】:2015-09-17 14:27:54
【问题描述】:

在 c++ (avr-g++) 中调用方法时是否可以内联初始化整数数组?

这是我尝试过的:

A({2, 4, 8, 3, 6});

void A(int* b) {

}

我得到了这个错误:

无法将 '' 转换为 'int*' 参数 '1' 到 'void A(int*)' 无法将参数 '1' 转换为 'int*' 参数 '1' 到 'void A(int*)'

【问题讨论】:

    标签: c++ arrays parameters inline


    【解决方案1】:

    看着我的老问题,我发现我现在实际上知道了这个问题的答案。如下:

    void A(int *b) {
    
    }
    
    void foo() {
        A((int[]){1,2,3});
    }
    

    【讨论】:

    【解决方案2】:

    不使用原始指针。但是你可以在 C++11 中使用 std::vector 来做到这一点:

    void A(std::vector<int> b) {
    
    }
    
    A({2, 4, 8, 3, 6}); // b.size() == 5
    

    或者只是一个推断数组大小的函数模板:

    template <size_t N>
    void A(const int (&b)[N]) {
    }
    

    【讨论】:

    • 很抱歉不接受您的回答。为了补偿我投票(实际上这是一个有效的答案,所以无论如何我都会投票。之前没有投票的声誉)。后来我了解了复合文字,作为答案发布,因为它似乎更合适
    猜你喜欢
    • 1970-01-01
    • 2020-11-09
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2021-02-07
    相关资源
    最近更新 更多