gpt4 book ai didi

c++ - 使用 cout 和函数调用结构参数的结构输出

转载 作者:行者123 更新时间:2023-11-30 04:06:01 33 4
gpt4 key购买 nike

所以,问题是编译时的几个错误。

ReadMovieData(string* title, string* director) cannot convert from movieInfo to string*

DisplayMovieData(string title, string director) cannot convert from movieInfo to string

No operator found which takes a right-hand operand of type 'movieInfo' (or there is no acceptable conversion.

底部错误在 DisplayMovieData() 中发生两次,因此为了简单起见,我只写了一次。

ReadMovieData 函数应接受结构指针引用变量,DisplayMovieData 函数应接受 MovieInfo 结构变量。

main 函数创建一个包含 2 个 MovieInfo 结构变量的数组,其他函数应该在数组的一个元素上调用。

我完成的代码如下。

#include <stdafx.h>
#include <string>
#include <iomanip>
#include <iostream>
using namespace std;

//prototypes
int ReadMovieData(string* title, string* director);
int DisplayMovieData(string title, string director);

struct movieInfo {
string title, director;
};

int main(){

const int SIZE = 2;
movieInfo movieList[SIZE];
movieInfo movie;

//supposed to assign data to movieList[i] at some point
for (int i = 0; i < SIZE; i++){
ReadMovieData(movie, movie);
DisplayMovieData(movie, movie);
}
return 0;
}

int ReadMovieData(movieInfo &title, movieInfo &director){

movieInfo movie;

//get the movie name
cout << "What is the movie? ";
cin.ignore();
cin >> movie.title;

//get the movie director
cout << "What is the director of " << movie.title << "?";
cin.ignore();
cin >> movie.director;

return 0;
}

int DisplayMovieData(movieInfo title, movieInfo director){

cout << "The movie name is: " << title << endl;
cout << "The director of " << title << " is: " << director << endl;

return 0;
}

最佳答案

您的函数原型(prototype)和它们的定义之间存在不匹配,您可以比较两者的参数类型。

请注意,由于您为电影信息定义了一个结构,因此您可以直接将其传递给读取和显示函数(而不是传递单个结构数据成员字符串)。

您可能需要阅读以下可编译代码:

#include <iostream>
#include <string>
using namespace std;

struct MovieInfo {
string title;
string director;
};

void ReadMovieData(MovieInfo& movie);
void DisplayMovieData(const MovieInfo& movie);

int main() {
const int SIZE = 2;
MovieInfo movieList[SIZE];

for (int i = 0; i < SIZE; i++) {
ReadMovieData(movieList[i]);
DisplayMovieData(movieList[i]);
}
}

// Since movie is an output parameter in this case, pass by non-const reference.
void ReadMovieData(MovieInfo& movie) {
//get the movie name
cout << "What is the movie? ";
cin >> movie.title;

//get the movie director
cout << "What is the director of " << movie.title << "?";
cin >> movie.director;
}

// Since movie is an input parameter in this case, pass by reference to const.
void DisplayMovieData(const MovieInfo& movie) {
cout << "The movie name is: " << movie.title << endl;
cout << "The director of " << movie.title
<< " is: " << movie.director << endl;
}

关于c++ - 使用 cout 和函数调用结构参数的结构输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065233/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com