c ++将struct传递给函数

时间:2015-04-22 01:59:38

标签: c++ pointers struct

首先,这是我的班级任务,我已经脱掉了所有的头发,并决定请你们帮忙。所以,我有一个txt文件,其中包含一些结构化信息(字符串,双精度,字符串,双...),我需要将其读入一个结构数组。那部分代码工作正常。但是,当我把它单独的功能,并尝试调用它没有任何作用。我假设我传入函数的值写错了。请指出我搞砸了哪里。非常感谢你提前!

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;
int numberOfItems;

ifstream inFile;

struct menuItemType
{
    string menuItem;
    double menuPrice;
};

void showMenu(menuItemType, int&);
int getData(ifstream, menuItemType*, int);

int main()
{
    menuItemType *menuList;

    menuList = new menuItemType[numberOfItems];

    int getData(ifstream inFile, menuItemType* menuList, int numberOfItems);

    cout << "Test\n";

    return 0;
}

// Get Data from txt file
int getData(ifstream inFile, menuItemType* menuList, int numberOfItems)
{

    int counter;
    string s;

    inFile.open("test.txt");

    for (counter = 0; counter < numberOfItems; counter++)
    {
        getline(inFile, s);
        menuList[counter].menuItem = s;
        inFile.ignore();
        inFile >> menuList[counter].menuPrice;
        inFile.ignore();
    }

    inFile.close();

    return 1;
}

1 个答案:

答案 0 :(得分:0)

int getData(ifstream inFile, menuItemType* menuList, int numberOfItems);

main()内声明一个函数(它有效,它实际上隐藏了非主要声明)。您可能打算调用 getData函数,例如

getData(inFile, menuList, numberOfItems);

其中inFilemenuListnumberOfItems是您必须定义/传递的参数。

您还需要通过引用传递ifstream(因为您无法复制它),或者传递时传递std::move(后一选项仅在C ++ 11中有效)。