我正在尝试将一些变量从我的main函数传递到我已经创建的类中,稍后我会将输入存储在文件中。我希望能够存储多个不同的对象,最多可以存储20个。
int main(){
int a[20];
float b[20];
string c[20];
string d[20];
string name[20];
char contin;
menu MyMenu;
for(int i = 0; i < 20; i++){
cout << "Please enter the name of the item: ";
cin >> name[i];
cout << "\nPlease enter a value: ";
cin >> a[i];
cout << "\nPlease enter a value: ";
cin >> b[i];
cout << "\nPlease enter a phrase: ";
cin >> c[i];
cout << "\nPlease enter a a phrase: ";
cin >> d[i];
cout << "\n\nWould you like to go through the list again?(y/n): ";
cin >> contin;
cout << "\n";
if(contin == 'N' || 'n'){
break;
};
};
void MyMenu.storeitem(a[20], b[20], c[20], d[20]);`};`
这是我的主要功能,它有一个循环,然后将输入存储到数组中。
我遇到问题的那一行是最后一行,我试图将它全部传递给类函数。
以下是课程
class menu{
public:
void storeitem(int a[20], float b[20], string c[20], string d[20]);
};
void menu::storeitem(int a[20], float b[20], string c[20], string d[20]){
int storeb[20];
int storea[20];
string storec[20];
string stored[20];
storeb[20] = b[20];
storea[20] = a[20];
storec[20] = c[20];
stored[20] = d[20];
};
我认为问题出在主函数的最后一行,我试图调用类函数。
答案 0 :(得分:1)
void
或`
来调用函数。storeb[20] = b[20];
这样的事情不是如何复制数组而是无意义的访问。试试这个:
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
const int MAX = 20;
class menu{
public:
void storeitem(int a[MAX], float b[MAX], string c[MAX], string d[MAX]);
};
void menu::storeitem(int a[MAX], float b[MAX], string c[MAX], string d[MAX]){
int storeb[MAX];
int storea[MAX];
string storec[MAX];
string stored[MAX];
for(int i = 0; i < MAX; i++){
storeb[i] = b[i];
storea[i] = a[i];
storec[i] = c[i];
stored[i] = d[i];
}
// do something with what is stored
}
int main(){
int a[MAX] = {0};
float b[MAX] = {0};
string c[MAX];
string d[MAX];
string name[MAX];
char contin;
menu MyMenu;
for(int i = 0; i < MAX; i++){
cout << "Please enter the name of the item: ";
cin >> name[i];
cout << "\nPlease enter a value: ";
cin >> a[i];
cout << "\nPlease enter a value: ";
cin >> b[i];
cout << "\nPlease enter a phrase: ";
cin >> c[i];
cout << "\nPlease enter a a phrase: ";
cin >> d[i];
cout << "\n\nWould you like to go through the list again?(y/n): ";
cin >> contin;
cout << "\n";
if(contin == 'N' || 'n'){
break;
}
}
MyMenu.storeitem(a, b, c, d);
}
答案 1 :(得分:0)
您不需要将数组的大小作为storeitem函数中的参数传递。但是,您应该添加一个计数,这由int i表示,作为最后一个参数。
void menu::storeitem(int a[], float b[], string c[], string d[], int i){
添加i ++;在循环底部的内部,这将保持他们经历了多少次全部时间并输入数据。你现在也必须在调用你的函数时传递i作为参数。
cin >> contin;
i++;
if((contin == 'n') || contin == 'N'){
break;
}
}
MyMenu.storeitem(a, b, c, d, i);
你想在这里完成什么? 您是否尝试将我们放入数组b的内容存储到storeb中? 所有这些陈述都说stroreb,storea等中的第20个元素等于我们传递给函数的参数的第20个元素。我们将非常感谢更多的信息。
storeb[20] = b[20];
storea[20] = a[20];
storec[20] = c[20];
stored[20] = d[20];
};