【问题标题】:Passing a struct with a void function使用 void 函数传递结构
【发布时间】:2017-02-06 15:45:16
【问题描述】:

我的结构是:

const int strSize = 256;
const int databaseMaxSize = 10;

struct ComicInfo {
char name[strSize];
char author[strSize];
char volumeInfo[strSize];
char publisher[strSize];
int year;
double price;
int copies;
};

如何将 struct 和 databaseMaxSize 传递给 void 函数,这就是我对 struct 要做的全部事情吗?

编辑:完整代码,我知道我没有调用 void 函数。 我正在尝试将 7 个变量放入 void loadData 函数中,如何创建正确的 loadData 函数,我是否正确加载了文本文件“Comics.txt”中的数据?

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>

using namespace std;

const int strSize = 256;
const int databaseMaxSize = 10; // Testing value, set it higher

struct ComicInfo {
char name[strSize];
char author[strSize];
char volumeInfo[strSize];
char publisher[strSize];
int year;
double price;
int copies;
};

void loadData(struct ComicInfo database[databaseMaxSize], int databaseSize);

int main () {
        ComicInfo database[databaseMaxSize];
        int databaseSize = 0;

        file.close();

        return 0;
}

void loadData(struct ComicInfo database[databaseMaxSize], int databaseSize)
{
        *databaseSize = 0;

        ifstream inputFile;
        inputFile.open("Comics.txt");

        if (!inputFile.is_open){
                exit(1);
        }

        inputFile.getline(database[name], databaseSize, ',');
        while (!inputFile.eof()){
                inputFile.getline(database[author], databaseSize, ',');
                inputFile.getline(database[volumeInfo], databaseSize, ',');
                inputFile.getline(database[publisher], databaseSize, ',');
                inputFile.getline(database[year], databaseSize, ',');
                inputFile.getline(database[price], databaseSize, ',');
                inputFile.getline(database[copies], databaseSize, ',');
                databaseSize++;
                inputFile.getline(database[name], databaseSize, ',');
                }
}

【问题讨论】:

  • 您能否详细解释一下您要完成的功能和任务,您的 void 功能是什么,是采用 void 参数并返回 void 或其他内容。
  • 尚不清楚您的问题究竟是什么“无效函数”。您是否介意提供一些示例代码来说明您要实现的目标、尝试过的目标以及结果如何。
  • 我试图将 7 个“变量”传递给一个 void 函数,然后打开一个文件并将数据读入变量中。我的主函数中有这行代码,不知道它是否应该在那里:“ComicInfo database[databaseMaxSize];”
  • 我尝试过的 void 函数,错误是变量未在该范围内声明:“void loadData(struct ComicInfo database[databaseMaxSize], int databaseSize);”
  • 请写出您所写的完整代码,其中包含您所面临的错误。

标签: c++ struct


【解决方案1】:
void my_function (struct ComicInfo& st, int databaseMaxSize) {
// code
}

请注意,我们正在传递对对象的引用,因此不会创建对象的额外副本。如果my_function不应该对结构数据进行更改,则可以将参数标记为const struct ComicInfo&amp;

调用:

struct ComicInfo a;
my_function(a, databaseMaxSize); // Assuming you have databaseMaxSize available

【讨论】:

  • 我对调用中的“a”感到困惑,这是什么意思?
  • @JonathanL,astruct ComicInfo 类型的对象的名称。对象名称可以是您喜欢的任何名称。
猜你喜欢
  • 2013-10-19
  • 2013-12-12
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多