@AlexB_49
Студент

Как исправить ошибку «expression must have pointer-to-object type»?

Я делаю многофайловый проект на С++ с 2 .cpp файлами и 1 .h файлом (direct.h). Вот функция main:

#include <iostream>
#include <direct.h>

using namespace std;

int direct(const int rows, const int cols, int ARR); 

int main()
{
const int rows = 9;
const int cols = 9;

int ARR[rows][cols];

direct(const int rows, const int cols, int ARR);

}


А вот моя функция, которая по спирали заполняет массив:

int direct(const int rows, const int cols, int ARR)
{
int val;

// Initialize the array to 0 values
for (int i = 0; i < rows;i++)
{
    for (int j = 0; j < cols;j++) 
    {
        val = 0;
    }
}

// Use symbols for directions
enum dir
{
    left = 0,
    down,
    up,
    right,
}
dir = left;

// Define the starting point and starting value
int x = rows / 2;
int y = cols / 2;
int val = 1;

// A flag to know when to stop
bool stop = false;

// Start
for (;;)
{
    ARR[x][y] = val++;
    switch (dir)
    {
    case left:
        y -= 1;
        if (y < 0) stop = true;
        else if (ARR[x + 1][y] == 0) dir = down;
        break;
    case down:
        x += 1;
        if (x > rows) stop = true;
        else if (ARR[x][y + 1] == 0) dir = right;
        break;
    case right:
        y += 1;
        if (y >= rows) stop = true;
        else if (ARR[x - 1][y] == 0) dir = up;
        break;
    case up:
        x -= 1;
        if (x < 0) stop = true;
        else if (ARR[x][y - 1] == 0) dir = left;
    }
    if (stop) break;
}
}


В main.cpp файле все хорошо. Однако, в direct.cpp файле (моей функции) выбивают ошибки "expression must have pointer-to-object type" и переменные "x" и "y" внутри цикла "for" подчеркиваются красным, так что проблема в них.
Что я делаю не так? И как мне это исправить?
  • Вопрос задан
  • 1060 просмотров
Решения вопроса 1
Надо так
int direct(const int rows, const int cols, int** ARR);

Но в c++ лучше использовать std::vector
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы