函数参数中的逗号导致代码块中出现奇怪的参数拆分

时间:2019-02-25 05:20:47

标签: c++ c++14 codeblocks

我正在尝试编写一个函数,该函数可以将包含长度为3的int数组的向量作为参数。经过一番阅读后,我被指示通过将std :: array放入std :: vector来执行此操作。但是我似乎无法弄清楚该怎么做。

这是我的代码:

#include <vector>
#include <array>

void example(int unrelated_argument1, std::vector<std::array<int, 3> > argument, int unrelated_argument);

void example(int unrelated_argument1, std::vector<std::array<int, 3> > argument, int unrelated_argument)
{
    for(unsigned int i = 0; i < argument.size(); i++)
    {
        printf("Contents of array number %i are %i %i %i\n", i, argument[i][0],argument[i][1], argument[i][2]);
    }
}

int main()
{
    std::vector<std::array <int, 3> >test_vector;

    std::array<int, 3> test_array1 = {1, 2, 3};
    std::array<int, 3> test_array2 = {10, 20, 30};
    std::array<int, 3> test_array3 = {1000, 2000, 3000};

    test_vector.push_back(test_array1);
    test_vector.push_back(test_array2);
    test_vector.push_back(test_array3);

    example(0, test_vector, 0);
}

我希望称为example的函数在此处采用3个参数,但是我的IDE(代码块)声称这会导致4个参数:

int unrelated_argument1std::vector<std::array<int3> > argumentint unrelated_argument2

此处的第二个和第三个参数不正确:我希望该参数改为std::vector<std::array<int, 3> > argument

我在这里做错了什么?

编辑:经过大量的阅读和研究,看来这是代码块中的已知错误。 https://sourceforge.net/p/codeblocks/tickets/491/此处的代码似乎正确。

1 个答案:

答案 0 :(得分:0)

经过更多研究,看来这确实是代码块中的错误,而不是上面的代码。 https://sourceforge.net/p/codeblocks/tickets/491/截至本文为止,最新的稳定版本(17.12)仍然存在此错误。如果您还遇到此错误,则可能需要尝试每晚进行一次构建。