2016-10-28 11 views
0

私はいくつかの幾何学的形状のための小さなライブラリを作成しています。そうするために、私はプロトタイプをshapes.hファイルに書き出し、メソッドはshapes.cppファイルに書きます。 これはヘッダーです:不明なタイプ名 'クラス'

#ifndef __shapeslib 
#define __shapeslib 

class Shape{ 
protected: 
    struct dimensions{ 
    double heigth; 
    double width; 
    }; 
    double radius;      // for circle class to be inherited 

public: 
    Shape(double heigth, double width); // Constructor 
    Shape(const Shape & shape);   // copy constructor for class 
    ~Shape();        // Destructor 

    virtual double area(double heigth, double width); 
    virtual double perimeter(double heigth, double width); 
    void height(); 
    void width(); 
    double rotate(double heigth, double width); 
}; 

しかし、Atomのソフトウェアでファイルを保存するとき、私はラインclass Shape{

unknown type name 'class'

expected ';' after top level declarator

のためにこれらの2つのエラーを取得し、私はその可能性hereを読みます私がC++ではなくCでコンパイルしているからです。私は心からこのことを避ける方法はまだ考えていません(まだ初心者です)。

また、ファイル名を.hから.hppに変更しようとしましたが、動作しているようです。残念ながら、.hヘッダーファイルが必要です。

フィードバックは本当にありがとうございます。 ありがとうございます。

+2

Cには「クラス」はありません。 –

+0

はい、同意します。しかし、このコードはC++用です(またはそうすべきです)。 –

+0

gccでコンパイルする場合は、g ++でコンパイルしてみてください。 – OutOfBound

答えて

0

実際、Atomは.hヘッダーファイルをC言語ファイルとして自動的に検出したようです。これを解決するいくつかの方法が、hereで説明されています。私はctrl + shift + Lを使用してCからC++への手動切り替えを試みましたが、今のところエラーはありません。私はまだワードclass隣赤い点を有していてもよく、そのようなエラーが示される:

expected ';' after top level declarator 

が、コードは、しかし正常に実行されます。

関連する問題