将公有改成私有后 项目不能运行
希望大家看到了可以指点一二
下面是两个头文件
#pragma once
#include<iostream>
#include <string>
using namespace std;
class Person
{
public:
string m_Name; //商品名
int m_Category; //分类:1食品 2日用品
int m_Price; //价格
string m_Addr; //产地
};
#pragma once
#include "Person.h"
#include<iostream>
#include <string>
#include <fstream>//文件操作的头文件
#define MAX 1000 //最大人数
using namespace std;
class Supermaket
{
public:
class Person personArray[MAX]; //系统中保存的商品数组
void showMenu(Supermaket* abs);
void addPerson(Supermaket* abs);
void showPerson(Supermaket* abs);//系统中保存的商品数组
int isExist(Supermaket* abs, string name);//利用商品名为检验标志
void deletePerson(Supermaket* abs);
void findPerson(Supermaket* abs);
void modifyPerson(Supermaket* abs);//5、修改指定商品信息
void cleanPerson(Supermaket* abs);//6.清空系统
int m_Size; //系统中商品个数
};
我用的是vs的c++
初步思路是构造函数,但无从下手
#pragma once
#include<iostream>
#include <string>
using namespace std;
class Person
{
public:
string m_Name; //商品名
int m_Category; //分类:1食品 2日用品
int m_Price; //价格
string m_Addr; //产地
};
class Supermaket : public Person
{
public:
void showMenu(Supermaket* abs);
void addPerson(Supermaket* abs);
void showPerson(Supermaket* abs);//系统中保存的商品数组
int isExist(Supermaket* abs, string name);//利用商品名为检验标志
void deletePerson(Supermaket* abs);
void findPerson(Supermaket* abs);
void modifyPerson(Supermaket* abs);//5、修改指定商品信息
void cleanPerson(Supermaket* abs);//6.清空系统
int m_Size; //系统中商品个数
};
试试
今日在写代码中添加一个类后,触发了诸多错误,且错误均是在编译后产生的
首先,让我们来端详一下这些错误
足足
170条错误
瞬间就给我搞懵逼了
并且我仔细检查了每一个错误
发现在语法上均没有错误
那么这些问题是如何产生的呢?
通过观察 不难发现 所有错误都是与Line这个类有关的
错误的原因就是头文件的问题
可能的原因有以下几种(由网上冲浪加以总结,由于编者水平有限,可能有误,恳请指出)
经检查 1无问题
2 由于使用了#pragma once
不会重复包含头文件(或用#ifndef
)
实际问题出现在3中
Shape类与Line类互相包含了对方的头文件
造成了编译器无休止的彼此包含
解决方法
将Line类写在Shape.h中
参考资料:
“意外的标记位于“;”之前;语法错误 : 缺少“;”(在“*”的前面);缺少类型说明符 - 假定为 int”
关于【error C3646: 未知重写说明符】的若干种可能性
2020.6.6
编者水平有限 希望能对有相同遭遇的朋友有所帮助
问题:请问您期望的技术领域是什么?例如面向对象编程、C++、继承等领域?
答:我期望的技术领域是物联网和人工智能领域。
由于没有具体的问题和错误提示,我无法提供相关的解决方案和代码。但是我可以提供以下常见问题的解决方案:
函数在声明时可以设置默认参数,例如:
void func(int a, int b = 10) {
// ...
}
如果没有传递第二个参数,那么默认为10。
使用指针需要先定义指针变量,例如:
int *ptr; // 定义一个指向int类型的指针变量
然后可以使用&取得变量地址,例如:
int a = 10;
ptr = &a; // 将ptr指向a的地址
可以使用*获取指针指向的值,例如:
int b = *ptr; // 将b赋值为ptr所指向的地址的值
函数参数有值传递和引用传递两种方式:
值传递将传递的参数的值复制一份,函数内部操作的是复制的副本,不影响原始值。
引用传递将传递的参数的地址传递进去,函数内部操作的是原始值,可以修改原始值。
例如:
void func1(int a) {
a = a + 10;
}
void func2(int &a) {
a = a + 10;
}
int main() {
int num = 10;
func1(num); // num的值不变,仍为10
func2(num); // num的值变为20
}
二维数组的操作需要使用两个循环,例如:
int arr[2][3] = {{1,2,3},{4,5,6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
输出结果为:
1 2 3
4 5 6
可以使用graphics.h中的loadimage函数来加载图片,例如:
IMAGE img;
loadimage(&img, "test.jpg");
可以使用graphics.h中的saveimage函数来保存图片,例如:
saveimage("test.jpg", &img);
需要注意的是,加载和保存图片需要打开图形界面,需要在main函数中加入initgraph函数初始化图形环境,例如:
int main() {
initgraph(640, 480);
// 加载和保存图片的代码
closegraph();
}
可以使用graphics.h中的putimage函数来绘制图形,例如:
IMAGE img;
loadimage(&img, "test.jpg");
putimage(0, 0, &img);
需要注意的是,绘制图形需要打开图形界面,需要在main函数中加入initgraph函数初始化图形环境,例如:
int main() {
initgraph(640, 480);
// 绘制图形的代码
closegraph();
}