我是C ++的新手,正在尝试建立一个从另一个继承的类。在这种情况下,我有一个超类DataScraper,该类应该有两个子级,即JSONDataScraper和XMLDataScraper。好吧...那行不通。编译时,出现以下消息:
'identifier':仅在构造函数定义上允许使用构造函数初始值设定项列表(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)
{
//...
}
我能做什么 ?
的构造函数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)
// ^^^^^^ ^
{
//...
}
基本上,您会混淆编译器的内容。
修复参数列表以使其匹配,一切都应该正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句