美好的一天,
我试图在* 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
答案 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文件中,以便他们知道他们正在调用的其他类结构。