2017-01-12 14 views
-1

私は継承したクラスのデストラクタに関する質問があります:私は親クラスの幾何学的形状を有するQtのC++デストラクタエラー

を:

Geometry.h: 
    #ifndef GEOMETRY_H 
    #define GEOMETRY_H 

    #include <QDialog> 
    class Geometry : public QDialog 
    { 
     Q_OBJECT 

    public: 
     explicit Geometry(QWidget *parent = 0); 
     virtual ~Geometry() {} 
    };   
    #endif // GEOMETRY_H 

と私はGeometry.hを変更

Geometry.cpp 
    #include "Geometry.h" 
    #include "ui_Geometry.h" 

     Geometry::Geometry(QWidget *parent) : 
      QDialog(parent) {   } 

virtual ~Geometry() ; 

および追加Geometry.cpp

Geometry::~Geometry(void) 
{ 
    // ... 
} 

に次の私は、私はこのエラーを取得する理由

はあなたが私に言うことができる「::〜ジオメトリ()ジオメトリの複数の定義」エラーが出ますか? .cppファイルにコードを入れることはできますか?したがって

Geometry::~Geometry(void) 
{ 
    // ... 
} 

:また、デストラクタの完全な実装である、

virtual ~Geometry() {} 

、その後、あなたはこれを追加します。

+0

どのようにプログラムをビルドしますか?あなたはIDEかプレーンテキストエディタを使用していますか?あなたはヘッダーファイルを保存するために覚えていますか?正しいヘッダーファイルを使用していますか? –

答えて

3

あなたはデストラクタの完全な実装である、これを持っていますあなたが受け取っているエラーです。この問題を解決するには

は、ヘッダファイル内の1つの空の括弧を削除します。

virtual ~Geometry(); 

編集:あなたはおそらくより多くのを使用してアプリケーション全体を再構築していなかったので、私は、あなたが変更を行ったことがわかり更新されたヘッダー。