一、error C2061: 语法错误: 标识符“Car”
问题截图:
Parking.h文件:
Car.h文件:
明明我include了Car.h文件,可编译器却找不到,那可能是我Car.h文件出现了问题,谷歌之后才知道,这是由于循环引用造成的。
解决方法:
在Parking.h中用类的前项声明:class Car;
补充:
为了保证编译安全,在.h文件头部添加一些预处理,如果不加,则在文件多次引用时报错:
"error C2011 ‘class’类型重定义"
#pragma once
保证文件只被编译一次
#ifdef,#define,#endif
不仅可以保证同一个文件不会被编译多次,也能保证内容完全相同的两个文件不会被不小心同时编译,但依赖于宏名字不能冲突
示例:
#pragma once
... ... // 一些声明语句
或者
#ifndef _SOMEFILE_H_
#define _SOMEFILE_H_
.......... // 一些声明语句
#endif
二、链表pop()方法
这段程序有两处问题:
- 形参Car newData是值传递,相当于复制一个与实参一样对象传给了函数,那么在函数里不管怎么对newData进行操作,都不会对外面的实参造成任何影响。
调用pop方法:
2.newData与*temp->data都是对象,不能用"="赋值,需要使用重载函数重载"=":
三、this 是 0xCDCDCDCD
查了一下,出现0xCDCDCDCD一般是由于指针没有初始化。
于是打断点debug,一步一步调试,终于发现,原来是我没有对data初始化
添加初始化后再调试,data就有值了
四、 cout不明确
这个错是非常诡异,目前我只遇到过两次,一次是写程序时莫名其妙就出现了,还有一次是在帮董浩天调试程序时突然就出现了。触发条件尚不清楚。
解决方法:将"using namespace std;"给注释掉,等待它所有的cin,cout都出错,再将注释去掉,问题就解决了
原文地址:"error: cout 不明确的符号"
五、 将对象数组作为类的成员
一开始的时候,我是这么写的:
然后它报错,我想了想,哦,类在声明时是不给分配内存空间的,所以Car data[MaxSize]
这种写法是不对的
得先给它一个指针指向数组名,然后在构造函数里去创建这个类的成员Car data[MaxSize]
,如下:
类的声明
构造函数:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。