[C++] 컴파일 에러 error: expected type-specifier before ‘Line’
PureVirt.cc에서 주석처리한 14~17 라인을 별도의 파일로 분할하였습니다.
C++ 프로그램 line.cc를 컴파일할 때 다음과 같은 에어가 발생했습니다.
어디에서 잘못되었는지 말씀해 주시면 대단히 감사하겠습니다.
g++ -o line.o line.cc
In file included from line.hh:8:0,
from line.cc:1;
PureVirt.cc: In function ‘int main()’:
PureVirt.cc:34:17: error: expected type-specifier before ‘Line’
pG[0] = new Line;
^
PureVirt.cc:34:17: error: expected ‘;’ before ‘Line’
파일은 다음과 같이 3개로 분할되어 있습니다.
######################################
line.hh
######################################
1 #ifndef __LINE_HH__
2 #define __LINE_HH__
3
4 #include
5 #include
6 #include
7
8 #include "PureVirt.cc"
9
10 class Line : public Graphic {
11 public:
12 //virtual void Draw() { puts("Draw a line."); }
13 virtual void Draw();
14 };
15
16 #endif //__LINE_HH__
#######################################
line.cc
#######################################
1 #include "line.hh"
2
3 void Line::Draw() {
4 puts("Draw a line.");
5 }
#######################################
PureVirt.cc
#######################################
1 #include "line.hh"
2
3 #include
4 #include
5 #include
6
7
8 class Graphic {
9 public:
10 virtual void Draw() = 0;
11 };
12
13 /*
14 class Line : public Graphic {
15 public:
16 virtual void Draw() { puts("Draw a line."); }
17 };
18 */
19
20 class Circle : public Graphic {
21 public:
22 virtual void Draw() { puts("Draw a circle."); }
23 };
24
25 class Rect : public Graphic {
26 public:
27 virtual void Draw() { puts("Draw a rectanlular."); }
28 };
29
30 int main() {
31 Graphic *pG[3];
32 int i;
33
34 pG[0] = new Line;
35 pG[1] = new Circle;
36 pG[2] = new Rect;
37
38 for (i = 0; i < 3; i++) {
39 pG[i]->Draw();
40 }
41
42 for (i = 0; i < 3; i++) {
43 delete pG[i];
44 }
45
46 return 0;
47 }
댓글 달기