gpt4 book ai didi

c++ - 我如何完全删除数组并将其替换为 vector ?

转载 作者:行者123 更新时间:2023-11-28 05:30:45 29 4
gpt4 key购买 nike

我已经为我的类(class)完成这项作业大约一天了,我已经完成了几乎所有的事情。我唯一缺少的是删除数组并将其替换为 vector 。

#ifndef MENU
#define MENU
#include <vector>
const int MAXCOUNT = 20;
struct menuItem
{
void(*func)();
char decript[50];
};
class Menu
{
private:
//vector <int> v; i tried replacing the "mi"'s in the menu.cpp file with v.push_back but i kept getting pointer errors
menuItem mi[MAXCOUNT];
int count = 0;
void runSelection();
public:
Menu();
void addMenu(char *Description, void(*f)());
void runMenu();
void waitKey();
};
#endif

这是cpp文件。我正在尝试用 v 替换数组 mi。我知道我遗漏了一些东西,但我想不通,所以我只是将它与数组一起使用。

 Menu::Menu()
:count(0)
{

}
void Menu::addMenu(char *Description, void(*f)())
{
if (count < MAXCOUNT)
{
this->mi[count].func = f;
strcpy(this->mi[count].decript, Description);
count++;
}
}
void Menu::runMenu()
{

for (;;)
{
system("CLS");
for (int i = 0; i < count; i++)
{
cout << this->mi[i].decript << endl;

}
runSelection();
}
}
void Menu::waitKey()
{
cout << "Press any key to continue" << endl;
while (!_kbhit());
fflush(stdin);
}
void Menu::runSelection()
{
int select;
cin >> select;
if (select <= count)
this->mi[select - 1].func();

}

最佳答案

最简单的方法应该是替换

    menuItem mi[MAXCOUNT];     

   std::vector<menuItem> mi;

并在你的构造函数中正确初始化它

Menu::Menu()
:count(0)
,mi(MAXCOUNT)
{

}

假设您之前有工作代码,这应该可以无缝地替换原始数组。


使用当前的 c++ 标准,您甚至可以简单地使用

   std::array<menuItem,MAXCOUNT> mi;

这甚至不需要在构造函数中进行初始化。

关于c++ - 我如何完全删除数组并将其替换为 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39582543/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com