使用g ++或CC编译多个C ++文件

时间:2016-09-27 04:40:06

标签: c++

美好的一天,

我试图在* nix命令行上查找如何编译多个C ++文件。

我试过这两个链接     Using G++ to compile multiple .cpp and .h files

Using G++ to compile multiple .cpp and .h files

我有一个简单的抽象类:

  // Base class
  class Shape 
  {
  public:
     // pure virtual function providing interface framework.
     virtual int getArea() = 0;

     void setWidth(int w) {
        width = w;
     }

     void setHeight(int h) {
        height = h;
     }

  protected:
     int width;
     int height;
  };

然后派生一个:

    // Derived classes
    class Rectangle: public Shape
    {
    public:
       int getArea()
       { 
          return (width * height); 
       }
    };

这是驱动程序:

  #include <iostream>

  using namespace std;

  int main(void)
  {
     Rectangle Rect;

     Rect.setWidth(5);
     Rect.setHeight(7);

     // Print the area of the object.
     cout << "Total Rectangle area: " << Rect.getArea() << endl;

     return 0;
  }

这是一个简单的,所以我不需要makefile,但这是我尝试过的:

> g++ Shape.cc  - This creates a Shape.o
> g++ Shape.cc Rectangle.cc ShapeDriver.cc - This creates an error
> g++ ShapeDriver.cc Shape.cc Rectangle.ccc - This creates an error

事实证明,Rectangle.cc无法识别宽度和高度定义,这是有道理的。

我还需要做些什么来编译它?我是一个完整的C ++ noob。

TIA,

COSON

1 个答案:

答案 0 :(得分:0)

您需要将以下内容添加到不同的文件...

Rectangle.cc的顶部

#include "Shape.cc"

ShapeDriver.cc的顶部

#include "Rectangle.cc"

此外,在您的第三个gcc行中,您有一个拼写错误

g++ ShapeDriver.cc Shape.cc Rectangle.ccc - This creates an error

应该是Rectangle.cc

您的问题是,在每个文件中,从未定义过不同的类,因此他们不知道如何使用它们。就像....“矩形”首先需要知道“形状”在它衍生之前是什么。您应该在类定义之间使用.h文件,并将它们包含在其他.cc文件中,以便他们知道他们正在调用的其他类结构。