Ошибка: не удается преобразовать "корабль" в "корабль *" в назначении - PullRequest
0 голосов
/ 12 июля 2020

Итак, я работаю над радаром. Я сделал версию только для одного корабля и все работало нормально. По какой-то причине эта версия не работает.

Компилятор: Ошибка: невозможно преобразовать «корабль» в «корабль *» в назначении

Код:

#include <iostream>
#include <windows.h>
#include <ctime>
#include <cstdlib>

using namespace std;

struct ship{
    char name;
    int x;
    int y;
};
ship setPosition(ship space_ships[], int amount);
void update(ship space_ships[], char radar[][20], int x, int y);
int main () {
    srand( time( NULL ) );
    ship space_ships[2];
    int x = 10;
    int y = 20;
    char radar[10][20];
    update(space_ships, radar, x, y);
    return 0;
}

ship setPosition(ship space_ships[], int amount){
        for (int i=0; i<amount; i++){
            int liczba = rand()%10;
            int znak = rand()%26 + 65;
            space_ships[i].x = liczba;
            space_ships[i].y = 2*liczba;
            space_ships[i].name = znak;
            return space_ships[i];
        }
}


void update(ship space_ships[], char radar[][20], int x, int y){
    space_ships = setPosition (space_ships, 2);
    Sleep(2000);
    system("cls");
    update(space_ships, radar, x, y);
}

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

SetPosition не делает то, что вы думаете. В вашем случае он изменяет позицию первого корабля в массиве и выходит, возвращая копию объекта этого корабля.

0 голосов
/ 12 июля 2020

space_ships = setPosition (space_ships, 2); Это происходит потому, что ваша функция setPosition возвращает тип значения «корабль». И затем вы пытаетесь присвоить это массиву (space_ships).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...