首页 > 解决方案 > 我不确定为什么代码没有运行,它在编译时抛出一个错误,说它无法找到 PrintArray()

问题描述

int main()
{
    const char arr[][5] = {{ 'H','u','g','o','\0' },{'h','i'}};
    printArray(arr, 2, 5);

}

void printArray(const char arr[], int size)

{
    for(int i=0;i<size;i++)
    {
        cout << arr[i];
    }
    cout << endl;
}

void printArray(const char arr[][SIZE], int rows, int cols)
{   char temp[cols];

        for(int i=0;i<rows;i++)
        {char temp[cols];
            for(int j=0;j<cols;j++)
            {
                temp[j]=arr[i][j];
            }
            printArray(temp,cols);

        }

}

该代码旨在逐行打印二维数组。它应该超载printArray();

不知道为什么它不起作用,一切似乎都很好。

错误消息:在这一行没有调用“printArray”的匹配函数 printArray(arr, 2, 5);

标签: c++

解决方案


您可能面临 C++ 编译器的一种行为,即声明顺序。基本上,您的main()函数尝试调用尚未定义的printArray函数。通过重新排序定义,函数调用将起作用:https ://onlinegdb.com/r1jMt9d0r 。

void printArray(const char arr[], int size)
{
    for(int i=0;i<size;i++)
    {
        cout << arr[i];
    }
    cout << endl;
}

void printArray(const char arr[][SIZE], int rows, int cols)
{   char temp[cols];

        for(int i=0;i<rows;i++)
        {char temp[cols];
            for(int j=0;j<cols;j++)
            {
                temp[j]=arr[i][j];
            }
            printArray(temp,cols);

        }

}

int main()
{
    const char arr[][5] = {{ 'H','u','g','o','\0' },{'h','i'}};
    printArray(arr, 2, 5);

}

这个问题实际上已经被问过了,但您可能无法搜索解决方案。


推荐阅读