我对C ++很陌生,我试图建立一个从另一个继承的类。在这种情况下,我有一个超类DataScraper应该有两个子节点,JSONDataScraper和XMLDataScraper。嗯......它不起作用。当我编译时,我收到以下消息:
'标识符' :构造函数初始化列表仅允许在构造函数定义(C2250)
上使用
datascraper.h
#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)
{
//...
}
datascraper.cpp
#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文件。
#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.cpp
document.getElementsByClassName()
我该怎么办?
答案 0 :(得分: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)
// ^^^^^^ ^
{
//...
}
你基本上混淆了你的编译器。
修复参数列表以匹配,一切都应该没问题。