最近在看 C++程序设计入门(上) 崔毅东 这门课,今天做了第4单元作业【1】-在线编程 这个作业,遇到了很多之前都没有预料到的问题,现在对这些问题做一个总结。
1. Redefinition of Class Error
这个错误是由于我在MyRectangle.cpp中包含了"Screen.h"头文件,然后又在main.cpp中包了"Screen.h",包含了两次头文件,也就意味着重新定义了一次。当我把main.cpp中的头文件去掉之后错误消失。
2.program received signal sigsegv
这个错误是由于我在使用myRectangles[1]
MyRectangle* myRectangles = new MyRectangle[2];
对MyRectangles[1]中的Screen* 对象进行赋值时使用了screen_->setWidth(),而此时的screen_是一个空指针,这样调用会出现导致空指针异常产生。
3.passing 'const Screen' as 'this' argument of 'int Screen::getHeight()' disca
非常量版本的函数对于常量对象是不可用的,所以我们只能在一个常量对象上调用const成员函数。
void MyRectangle::setScreen(const Screen& screen)我在这个函数中调用了screen->getHeight()成员函数,而getHeight()并非是const版本,所以产生了上面的错误。
4.当程序莫名奇妙的停止时,如果程序里面有指针,一定第一时间要查看是否对空对象指针的的成员进行了访问,这个空指针异常发生的频率还是蛮高的。