子类调用超类构造函数

托马斯·科瓦尔斯基

我是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从超类的构造函数中调用子类的构造函数

Java:从超类构造函数中的子类调用的方法

从Java中的子类构造函数调用超类

Dart-如何在子类的构造函数中调用超类的工厂构造函数?

调用超类构造函数

超类子类构造函数java

从子类调用函数的超类

声明子类的对象时,为什么调用超类的构造函数?(Java)

有没有办法知道超类构造函数中调用对象的子类?C ++

如何从父类调用子类构造函数?

调用超类构造函数的MATLAB超类

超类构造函数调用应在构造函数主体中

如何使用超类的构造函数创建子类的实例

如何使用超类构造函数创建子类的实例?

Java超类变量和子类复制构造函数问题

java子类:从抽象超类继承的多个构造函数

在子类实例化中使用替代超类构造函数

在超类构造函数中指定哪个子类

部分模拟子类的方法使其绕过超类构造函数

如果将子类中的超类构造函数作为第一行调用,这有关系吗?

在调用超类的构造函数之前,有什么方法可以在Java中初始化子类的成员变量?

从超类构造函数调用基类重写方法

从超类调用子类中的相似命名函数

从子类调用超类函数的正确方法

python超类可以从其子类调用函数吗?

将参数传递给超类构造函数,而不必在子类构造函数中重复

从超类调用子类方法

在父类和子类的构造函数中调用重写的方法

在python中从子类调用父类构造函数