我需要帮助正确初始化一个结构,并将其传递到一个函数正确

I need help with properly initlizing a structure and passing it into a function properly

本文关键字:一个 函数 帮助 结构 初始化      更新时间:2023-10-16

我正在编写一个简单的c++数据库,使用Visual Studio 2008 express版,像程序排序和搜索一个文本文件包含NCAA获胜者和亚军按年,这个数据是保存在一个结构。我知道如何做排序和搜索,但我有麻烦正确初始化结构,并将其传递到一个函数,因为当我试图做到这一点,我是如何在类我得到了几个错误,我一直无法摆脱,任何帮助将不胜感激。

错误如下:

project5.cpp(145):错误C2676:二进制'[': 'Data'没有定义此操作符或转换为预定义操作符

可接受的类型

project5.cpp(145):错误C2228:左边的'.year'必须有class/struct/union

project5.cpp(146):错误C2676:二进制'[': 'Data'没有定义此操作符或转换为预定义操作符

可接受的类型

project5.cpp(146):错误C2228:左边的'.schoolWin'必须有class/struct/union

project5.cpp(147):错误C2676:二进制'[': 'Data'没有定义此操作符或转换为预定义操作符

可接受的类型

project5.cpp(147):错误C2228:左边的'.scoreWin'必须有class/struct/union

project5.cpp(148):错误C2676:二进制'[': 'Data'没有定义此操作符或转换为预定义操作符可接受的类型

project5.cpp(148):错误C2228:左边的'.schoolRunnerUp'必须有class/struct/union

project5.cpp(149):错误C2676:二进制'[': 'Data'没有定义此操作符或转换为预定义操作符可接受的类型

project5.cpp(149):错误C2228:左边的'.scoreRunnerUp'必须有class/struct/union

project5.cpp(191): error C2664: 'initializeStructure': cannot convert parameter 1 from 'Data [100]' to 'Data &'

My Structure Declaration:

const int Size = 100;           // size of structure
struct Data {                   // Struct definintion to take in stats
    int year;
    string schoolWin;
    int scoreWin;
    string schoolRunnerUp;
    int scoreRunnerUp;
} NCAAStats [Size] ;
void initializeStructure(Data& NCAAStats,  int Size);  // initialization function prototype
//function declaration
void initializeStructure(Data& NCAAStats,  int Size) {
    int Idx;
    for (Idx = 0; Idx < Size; Idx++) {
        NCAAStats[Idx].year = 0000;//line145
        NCAAStats[Idx].schoolWin = "winning school";//line146
        NCAAStats[Idx].scoreWin = 000;//line147
        NCAAStats[Idx].schoolRunnerUp = "losing school";//line148
        NCAAStats[Idx].scoreRunnerUp = 000;//line149
    }
}
//initalize the array of structures
initializeStructure(NCAAStats, Size);//line 191 function call from within main

基于最后一个错误,我认为这是可能的,出于某种原因,visual studio认为我的结构被命名为数据的大小为100时,它是大小为100的NCAAStats,但我不确定我做错了什么,导致这一点,任何建议将非常感谢。

既然你标记了c++,我建议你使用c++的特性…

#include <vector>
#include <string>
struct Data
{
  unsigned int year;
  std::string schoolWin;
  unsigned int scoreWin;
  std::string schoolRunnerUp;
  unsigned int scoreRunnerUp;
  Data() 
      : year(0)
      , schoolWin("winning school")
      , scoreWin(0)
      , schoolRunnerUp("loosing school")
      , scoreRunnerUp(0){}
}
// In main
std::vector<Data> my_data(100); // Create and initialize 100 instances of "Data".

注意这个错误:

project5.cpp(191) : error C2664: 'initializeStructure' : cannot convert parameter 1 from 'Data [100]' to 'Data &'

为initializeStructure()定义的参数NCAAStats是对NCAAStats类型的结构体的引用,您不能像数组一样使用它(我假设这就是您想要的)。您必须将其更改为指针 (Data *Data[])以匹配您实际作为参数传递的类型。

您已经在全局范围内声明了一个数组NCAAStats[Size]。但是,您的函数有称为NCAAStats的参数;这些隐藏了全局定义。因此,像NCAAStats[Idx]这样的东西是无效的,因为NCAAStatsData &而不是Data[]