用vs2017 C++写数据结构实验遇到的各种问题汇总

发布时间:2019-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了用vs2017 C++写数据结构实验遇到的各种问题汇总脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、error C2061: 语法错误: 标识符“Car”

问题截图:
Parking.h文件:
clipboard.png
Car.h文件:
clipboard.png

明明我include了Car.h文件,可编译器却找不到,那可能是我Car.h文件出现了问题,谷歌之后才知道,这是由于循环引用造成的。

clipboard.png
解决方法:
在Parking.h中用类的前项声明:class Car;

用vs2017 C++写数据结构实验遇到的各种问题汇总

补充:
为了保证编译安全,在.h文件头部添加一些预处理,如果不加,则在文件多次引用时报错:
"error C2011 ‘class’类型重定义"

  1. #PRagma once

保证文件只被编译一次

  1. #ifdef,#define,#endif

不仅可以保证同一个文件不会被编译多次,也能保证内容完全相同的两个文件不会被不小心同时编译,但依赖于宏名字不能冲突
示例:

#pragma once

... ... // 一些声明语句

或者

#ifndef   _SOMEFILE_H_

#define  _SOMEFILE_H_

.......... // 一些声明语句

#endif

二、链表pop()方法

用vs2017 C++写数据结构实验遇到的各种问题汇总


这段程序有两处问题:

  1. 形参Car newData是值传递,相当于复制一个与实参一样对象传给了函数,那么在函数里不管怎么对newData进行操作,都不会对外面的实参造成任何影响。

用vs2017 C++写数据结构实验遇到的各种问题汇总


调用pop方法:

用vs2017 C++写数据结构实验遇到的各种问题汇总

2.newData与*temp->data都是对象,不能用"="赋值,需要使用重载函数重载"=":

用vs2017 C++写数据结构实验遇到的各种问题汇总

三、this 是 0xCDCDCDCD

查了一下,出现0xCDCDCDCD一般是由于指针没有初始化。

用vs2017 C++写数据结构实验遇到的各种问题汇总


于是打断点debug,一步一步调试,终于发现,原来是我没有对data初始化

用vs2017 C++写数据结构实验遇到的各种问题汇总

添加初始化后再调试,data就有值了

用vs2017 C++写数据结构实验遇到的各种问题汇总

四、 cout不明确

这个错是非常诡异,目前我只遇到过两次,一次是写程序时莫名其妙就出现了,还有一次是在帮董浩天调试程序时突然就出现了。触发条件尚不清楚。
解决方法:将"using namespace std;"给注释掉,等待它所有的cin,cout都出错,再将注释去掉,问题就解决了
原文地址:"error: cout 不明确的符号"

五、 将对象数组作为类的成员

开始的时候,我是这么写的:

用vs2017 C++写数据结构实验遇到的各种问题汇总

然后它报错,我想了想,哦,类在声明时是不给分配内存空间的,所以Car data[MaxSize]这种写法是不对的
得先给它一个指针指向数组名,然后在构造函数里去创建这个类的成员Car data[MaxSize],如下:

类的声明

用vs2017 C++写数据结构实验遇到的各种问题汇总


构造函数:

用vs2017 C++写数据结构实验遇到的各种问题汇总

脚本宝典总结

以上是脚本宝典为你收集整理的用vs2017 C++写数据结构实验遇到的各种问题汇总全部内容,希望文章能够帮你解决用vs2017 C++写数据结构实验遇到的各种问题汇总所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。