第一篇文章!使用头文件继承时出错

时间:2014-11-11 04:32:20

标签: c++ inheritance header

这是我在堆栈溢出的第一篇文章!我已经使用这个网站多年了,我感谢所有人的帮助和时间。在帮助我编写好代码方面毫无价值。

当我尝试编译时,我收到以下错误消息:"错误:期望的类名"。我在互联网上搜索过,但我找不到解决问题的办法是不成功的。我也去了" 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"

1 个答案:

答案 0 :(得分:0)

你(错误地)#include ShapeClass.h中的“RectangleClass.h”。

此时Shape尚未定义,RectangleClass类定义尝试从尚未定义的内容继承。因此错误。