这是我在堆栈溢出的第一篇文章!我已经使用这个网站多年了,我感谢所有人的帮助和时间。在帮助我编写好代码方面毫无价值。
当我尝试编译时,我收到以下错误消息:"错误:期望的类名"。我在互联网上搜索过,但我找不到解决问题的办法是不成功的。我也去了" http://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm"和" Single Inheritance C++ and header files"有关继承和使用头文件的帮助。但我的问题仍然存在,而且我不知道自己做错了什么。我已将我的代码修剪为裸骨并在下面显示。非常感谢您的帮助。
编译器
$ make
c++ -c -o RectangleClass.o RectangleClass.cpp
c++ -c -o ShapeClass.o ShapeClass.cpp
In file included from ShapeClass.cpp:1:
In file included from ./ShapeClass.h:4:
./RectangleClass.h:6:26: error: expected class name
class Rectangle : public Shape {
^
1 error generated.
make: *** [ShapeClass.o] Error 1
生成文件
lab8: RectangleClass.o ShapeClass.o main.o
$(CXX) $(CXXFLAGS) -o $@ $^ -ansi -pedantic -Wall -Wextra
main.o: main.cpp
RectangleClass.o: RectangleClass.h
ShapeClass.o: ShapeClass.h
.PHONY: clean
clean:
$(RM) *.o
$(RM) main RectangleClass ShapeClass lab8
$(RM) *~
的main.cpp
#include "ShapeClass.h"
int main(){
return 0;
}
ShapeClass.h是父类
#ifndef SHAPECLASS_H
#define SHAPECLASS_H
#include "RectangleClass.h"
class Shape {
private:
double area;
public:
Shape(double defaultArea = 0);
};
#endif
ShapeClass.cpp
#include "ShapeClass.h"
Shape::Shape (double inputArea) {
area = inputArea;
}
RectangleClass.h,它是派生类
#ifndef RECTANGLECLASS_H
#define RECTANGLECLASS_H
#include "ShapeClass.h"
class Rectangle : public Shape {
};
#endif
RectangleClass.cpp
#include "RectangleClass.h"
答案 0 :(得分:0)
你(错误地)#include ShapeClass.h中的“RectangleClass.h”。
此时Shape尚未定义,RectangleClass类定义尝试从尚未定义的内容继承。因此错误。