Не могу вызвать функцию структуры в main - PullRequest
0 голосов
/ 24 ноября 2018

По какой-то причине мой код не скомпилируется, и я продолжаю сталкиваться с этой ошибкой:

не удалось преобразовать '(Movie *) (& myMovie)' из 'Movie *'на «Кино» **

Не уверен, что это значит, когда он говорит это, цените, если кто-то может сказать мне, что не так с моим кодом, также, новичок в структурах, так что извиняюсь за любые глупые ошибки.

Я хочу вывести то, что пользователь ввел, когда его спросили о подробностях фильма, но, как я уже говорил, не работает.

Спасибо.Вот мой код:

#include <iostream>
#include <cstring>
#include <iomanip>
#include <climits>
#include <cstdlib>

using namespace std;

const int MAX = 256;
const int MAXNUM = 10;
const int MINNUM = 1;

typedef char  Word[MAX];

//define a struct for a Movie
struct Movie{
  Word title;
  Word Director;
  float length;
};


// prompts user for number between min and max, and returns valid input
int getIntInRange(int min, int max);



//prompts user for a positive float, and returns valid value
float getPositiveFloat();


//prompts user to enter all the values in a movie and returns the movie

//implement these two functions

Movie getMovieFromUser();
//outputs a single movie

void outputMovie(Movie m);



//describe program to user
void displayOverview();


int main(){

//output overview of program

//prompt user to enter their favourite movie

//use the getMovieFromUser() function to get the movie and store it in a variable

//output the movie using the outputMovie function


  cout << endl;

  Movie myMovie[MAXNUM];
  getMovieFromUser(????);
  outputMovie(????);


return 0;
}

Movie getMovieFromUser(){

    Movie myMovie;
    //prompt user to enter title, and save it
    //prompt user to enter director and save it
    //prompt user for length, and save it

    Word buffer;
    cout << "Please enter your favourite movie \n";
    cout << "Title: ";
    cin.getline(buffer, MAX);
    strcpy(m.title, buffer);
    cout << "Director: ";
    cin.getline(buffer, MAX);
    strcpy(m.Director, buffer);
    m.length = getPositiveFloat();


    return myMovie;
}


void outputMovie(Movie m){
//output the contents of this movie
    cout << "Title: " << m.title << endl;
    cout << "Director: " << m.Director << endl;
    cout << "Length (minutes): " << m.length << endl;
}

1 Ответ

0 голосов
/ 24 ноября 2018

Ваш код не соответствует самому себе.У вас есть:

Movie getMovieFromUser();

Но потом:

Movie getMovieFromUser(Movie &m){

Первое, кажется, имеет больше смысла.Функция с именем getMovieFromUser может принимать заполненный опорный параметр или возвращать значение.Возвращение значения, кажется, имеет больше смысла.С этим исправлением этот код должен скомпилироваться:

Movie myMovie[MAXNUM];
myMovie[0] = getMovieFromUser();
outputMovie(myMovie[0]);

Вам нужно избавиться от параметра Movie &m в getMovieFromUser.Просто создайте один локально (как вы уже делаете).Я бы посоветовал назвать его m, а не myMovie, так как это может создать путаницу из-за наличия двух переменных с одинаковым именем.

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