Я разделил это на чистый костяной код. По сути, мне нужно передать 2d-массив в функцию, но размер массива считывается из текстового файла при выполнении. Все, что я прочитал на эту тему, говорит, что это способ сделать это, но компилятор говорит иначе. Вот код:Почему это не компилируется с mingw в Code :: Blocks?
#include <iostream>
using namespace std;
template <size_t r, size_t c>
void func(int (&a)[r][c])
{
return;
}
int main()
{
int rows = 5;
int cols = 6;
int Array[rows][cols];
func(Array);
return 0;
}
Я предпочел бы избегать векторов, так как я очень незнакомый с ними. Это вывод компилятора:
-------------- Build: Debug in test (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -c C:\Users\ME\Desktop\test\test\main.cpp -o obj\Debug\main.o
C:\Users\ME\Desktop\test\test\main.cpp: In function 'int main()':
C:\Users\ME\Desktop\test\test\main.cpp:20:15: error: no matching function for call to 'func(int [(((unsigned int)(((int)rows) + -0x000000001)) + 1)][(((unsigned int)(((int)cols) + -0x000000001)) + 1)])'
C:\Users\ME\Desktop\test\test\main.cpp:20:15: note: candidate is:
C:\Users\ME\Desktop\test\test\main.cpp:6:25: note: template<unsigned int r, unsigned int c> void func(int (&)[r][c])
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Я просто использовал «ряды» и «cols» в качестве подставки. Количество строк и столбцов будет считаться из текстового файла во время выполнения. Будет ли это работать? – bobsicle0
@ bobsicle0 nope. числа, считанные из текстового файла, во время компиляции неизвестны. используйте 'std :: vector' для вашего хранения. –