2016-09-16 14 views
-3

私はC++には新しく、別のクラスから継承するクラスを確立しようとしています。この例では、JSONDataScraperとXMLDataScraperの2つの子を持つスーパークラスのDataScraperがあります。まあ...それは動作しません。スーパークラスのコンストラクタを呼び出す子クラス

'識別子':コンストラクタ初期化子リストが唯一のコンストラクタ定義(C2250)

datascraper.h

#include <string> 
#include <vector> 
#include <Qstring> 

class DataScraper 
{ 
private: 
    std::vector<QString> GetFiles(const QString folder); 

protected: 
    std::vector<QString> filesToAnalyze; 

public: 
    DataScraper(const QString folderPath); 
    DataScraper(const std::vector<QString>& paths); 

}; 

datascraper上で許可されている、私はコンパイルするとき、私は次のメッセージが表示されます。 cpp

#include "datascraper.h" 
#include "Windows.h" 

DataScraper::DataScraper(const std::vector<QString>& paths) 
{ 
    //... 
} 

DataScraper::DataScraper(const QString folderPath) 
{ 
    //... 
} 

std::vector<QString> DataScraper::GetFiles(const QString folder) 
{ 
    //... 
} 

そして今、JSONDataScraperファイル。

#include "rapidjson.h" 
#include "datascraper.h" 
#include "streamreader.h" 
#include <QString> 

class JSONDataScraper : public DataScraper 
{ 
private: 
    StreamReader *FileContentsReader; 

public: 
    JSONDataScraper(QString folderPath); 
    JSONDataScraper(std::vector<QString> files); 
}; 

jsondatascraper.cpp

#include "jsondatascraper.h" 
#include "streamreader.h" 
#include "datascraper.h" 
#include <QString> 

JSONDataScraper::JSONDataScraper(const std::vector<QString>& paths) : DataScraper(paths) 
{ 
    //... 
} 

JSONDataScraper::JSONDataScraper(const QString& pathToFile) : DataScraper(pathToFile) 
{ 
    //... 
} 

私は何ができますか?

+0

[MCVE]を最初に構築します。 –

+0

Re: "superclass"と "children":一貫した用語を使用します。 「スーパークラス」は「サブクラス」に、「子供」は「親」になります。しかし、**本当に**一貫性が必要な場合は、言語定義で使用される用語「基本クラス」と「派生クラス」を参照してください。 –

答えて

2

JSONDataScraperのコンストラクタは、宣言と定義でそれぞれ異なるパラメータリストを持っています。これについて別のエラーメッセージが表示されるはずです。

あなたの定義は宣言されたコンストラクタとして認識されないため、ctor-initialiserはここでは無効です。

JSONDataScraper(std::vector<QString> files); 
JSONDataScraper::JSONDataScraper(const std::vector<QString>& paths) : DataScraper(paths) 
//        ^^^^^^     ^
{ 
    //... 
} 

JSONDataScraper(QString folderPath); 
JSONDataScraper::JSONDataScraper(const QString& pathToFile) : DataScraper(pathToFile) 
//        ^^^^^^  ^
{ 
    //... 
} 

基本的には、コンパイラの混乱が混乱しています。

パラメータリストを一致させるように修正してください。すべてがうまくいくはずです。

関連する問題