#include <iostream> #include<math.h> #include <vector> //后续使用容器vector需要 #include <math.h>//进行数学运算需要 #include <fstream> using namespace std; class Goods{ string name; int num; double prices; public: Goods(string a,int b,double c){ name=a;num=b;prices=c; } void shows(){ cout <<"序号"<<num<<"名称"<<name<<"价格"<<prices<<"\n"; } }; void jie(){ printf("1 登录 \n"); printf("2 商品信息管理 \n"); printf("3 权限管理 \n"); printf("4 退出 \n"); } void jie2(){ printf("1 增加商品 \n"); printf("2 修改商品 \n"); printf("3 删除商品 \n"); printf("4 退出 \n"); } void add(){ cout<<"请输入增加商品数量 \n"; int a;string q;int w;double e; cin>>a; Goods g[a]; for(int i=0;i<a;i++){ cout <<"请输入商品名字,序号,价格 \n"; cin >>q>>w>>e; g[a].Goods(q,w,e); }帮我查错
时间: 2023-08-06 17:07:57 浏览: 83
在您的 add 函数中,您尝试使用一个变量 `a` 来定义一个数组的大小,但是在 C++ 中,数组的大小必须是一个常量表达式,也就是在编译时就能确定的值,不能使用变量。如果您需要动态确定数组大小,可以使用 `vector` 来代替数组。另外,在您的循环中,应该使用 `i` 作为下标,而不是 `a`。修改后的代码如下:
```c++
void add(){
cout << "请输入增加商品数量:\n";
int a;
cin >> a;
vector<Goods> goodsList;
for (int i = 0; i < a; i++){
string name;
int num;
double prices;
cout << "请输入商品名字、序号和价格:\n";
cin >> name >> num >> prices;
Goods g(name, num, prices);
goodsList.push_back(g);
}
cout << "增加商品成功!\n";
}
```
然后,您可以在其他函数中以类似的方式使用 `vector` 来存储商品信息。同时,为了更好地维护商品信息,建议将 `Goods` 类中的成员变量设置为私有,并提供相应的公有成员函数来访问和修改商品信息。
相关问题
#include <iostream> #include <vector> #include <stdio.h> #include <math.h>int calculate(double a, do
您似乎引用了C++的一些头文件,并提到了一个名为`calculate`的函数,它接受一个double类型的参数a,但是后面的`do`可能是打字错误,通常在这种上下文中,应该是另一个参数名或者函数体。在C++中,`#include`用于引入其他头文件,如`<iostream>`用于输入输出操作,`<vector>`和`<stdio.h>`分别包含了向量和标准输入输出功能,`<math.h>`则包含数学函数。
例如,如果有一个简单的计算平方根的函数,可能会像这样:
```cpp
#include <iostream>
#include <cmath>
// 定义calculate函数,计算并返回给定数的平方根
double calculate(double a) {
return sqrt(a);
}
int main() {
double num;
std::cout << "请输入一个数字: ";
std::cin >> num;
double result = calculate(num);
std::cout << "该数字的平方根是: " << result << std::endl;
return 0;
}
```
在这个例子中,`calculate`函数使用了`<math.h>`库里的`sqrt`函数来计算平方根。`main`函数则从用户获取输入并显示结果。
我的头文件是这样写的#include <stdio.h> #include <math.h> #include <fstream> #include <iostream> #include <string>//getline #include <sstream> #include "stb_image.h" #pragma comment(lib, "openGL32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux.lib") #include <gl/glaux.h> #include "glew.h" #include "glut.h" #include <vector>,请问如何避免报错gl.h included before glew.h呢
在你的头文件中,应该将 `glew.h` 的引入放在 `gl.h` 的引入之前。因此,你应该将 `glew.h` 的引入语句移到 `gl.h` 的引入语句之前,就像这样:
```
#include <stdio.h>
#include <math.h>
#include <fstream>
#include <iostream>
#include <string>//getline
#include <sstream>
#include "stb_image.h"
#include <gl/glaux.h>
#include <vector>
#include "glew.h"
#include <gl/glut.h>
#pragma comment(lib, "openGL32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glaux.lib")
```
这样就能够避免 `gl.h included before glew.h` 的错误了。
阅读全文