如何在没有指针的情况下传递一个struct数组?C++

gam*_*l22 -4 c++ arrays structure function

你好,我对如何在不使用指针的情况下通过带有结构的函数正确传递数组感到困惑.我们只应该使用第1-8章,其中不包括指针..这里是我的代码,如果有人有任何建议或链接,以帮助谢谢!

const int MAX_DATA = 10000;

struct Inventory
{
   double sku;
   double count;
   double cost;
   string title;
};

void addMovie(Inventory data[], double count);
void allInfo(Inventory data[], double count);

int main ()
{
   Inventory data[MAX_DATA];
   int choice;
   int i = 0;
   double count = 0;
   return 0;
}

void addMovie(Inventory data[], double count)
{
int i = 0;

cout << "Please enter the name of the movie you wish to add " << endl;

cin >> data[i].title;
cin.ignore();
cout << "Please enter the SKU " << endl;
cin >> data[i].sku;
cout << "You have successfully added " << data[i].title << " : " << data[i].sku <<    endl;
i++;
count++;

}


void allInfo(Inventory all[], double count)
{
    for (int i = 0; i < count; i++)
    {
       cout << "Title: " << all[i].title << endl;
       cout << "SKU: " << all[i].sku << endl;
       i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 9

对于固定大小的数组,这样的东西应该工作,通过引用传递数组:

template <unsigned long N>
void addMovie(Inventory (&data)[N], unsigned long& count)
{
  std::cout << "addMovie has an array of size " << N << "\n";
}

...

Inventory data[MAX_DATA];
unsigned long counter = 0;
addMovie(data, counter);
Run Code Online (Sandbox Code Playgroud)

请注意,这将使您必须确保不超出数组的范围.

这样会更容易使用std::vector<Inventory>,在这种情况下,您不必担心引用语法的维度或奇怪的passign数组:

void addMovie(std::vector<Inventory>& data)
{
  std::cout << "addMovie has an array of size " << data.size() << "\n";
  Inventory invent = ....;
  data.push_back(invent)
}

....
std::vector<Inventory> data;
addMovie(data);
Run Code Online (Sandbox Code Playgroud)

  • +1来反击@ Drise的错误downvote. (5认同)
  • 如果指针不在"第1-8章"中,我认为模板不是. (2认同)
  • @JonathanSeng我的高级C++书只有8章:-) (2认同)
  • 你错过了这一点.问题在于可以使用什么,而答案完全绕过了这个问题,因此对问题完全没用. (2认同)
  • @Drise和这些限制在哪里?我没有看到它们在任何地方陈述,除了不使用指针,无论这意味着什么. (2认同)