私は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)
{
//...
}
私は何ができますか?
[MCVE]を最初に構築します。 –
Re: "superclass"と "children":一貫した用語を使用します。 「スーパークラス」は「サブクラス」に、「子供」は「親」になります。しかし、**本当に**一貫性が必要な場合は、言語定義で使用される用語「基本クラス」と「派生クラス」を参照してください。 –