C++ 新手:无法从继承自另一个类的类设置类构造函数

雷尼尔·卡尔扎达

我正在尝试构建一个从另一个类继承的类,并通过解析文本文件来初始化自己。所以我有:

在我的头文件(都在同一个文件中):

class Mother{
    public:
        Mother();
        Mother(std::string path);
        int parse_textfile(std::string path);
   protected:
        std::string path;};

class Daughter : public Mother {
    public:
       Daughter();
       Daughter(path);
       Daughter(std::string TITLE);
    protected:
        std::string path
        std::string TITLE

现在,在我的 cpp 文件中:

Mother::Mother(){};
Mother::Mother(string path)
:path(path)
{
    parse_textfile(path);
};

Mother::parse_textfile(string path)
{
    cout << "Processing file: " << path << endl;
    ifstream file(path.c_str());
    if (! file){
        cerr << "unable to open input file: " << grid_path << " --bailing out! \n";
    return -1;
}else{
    string TITLE;
    getline(file, TITLE);
    return Daughter(TITLE)

现在,我明白这段代码是不正确的(显然,因为它不会在没有错误的情况下编译),但我对 C++ 仍然如此原始,以至于在这一点上,一些专家的建议真的很重要。

目标是创建一个继承解析器的 Daughter 类,因为 Daughter 类本身应该解析文本文件并保存其中的所有变量。我会逐行解析,因为文本文件中有很多信息。我只是希望将这些信息保存在 Daughter 对象上,以便我以后可以对这些信息进行操作。

另外,我使用 C++ 主要是因为我不想共享源代码。如果有更合适的语言,我也想听听您的意见。在 Python 中这对我来说是微不足道的,但同样,我不想分享正在发生的事情。

编辑 1:

根据我从评论中得到的信息,我可以开始更清楚地看到具体问题应该是什么。

我有 3 个属于同一问题的文本文件,但每个文本文件都包含不同的信息。

我想要的是获得有关如何将每个文本文件初始化为派生自同一“母类”的单个对象的建议。也许解析器实际上属于每个女儿而不是母亲更有意义。无论哪种方式,对于那些评论旨在实际回答问题而不是问我“为什么要这样做”的人,我感谢您的帮助和建议。

尤里·施卡图拉

您的问题与 C++ 本身无关,而与软件架构和设计有关。您能否尝试将“解析器”功能提取到单独的类中(让它命名为“工厂”)。鉴于此,您有一个人来决定可以创建哪个实例 - 母亲,女儿,等等。并且您有一个类层次结构 Mother-Daughter-etc,它可以共享必要的公共代码并在需要时覆盖某些特定行为。

我知道这可以被命名为“矫枉过正”,但我会向您推荐名为“设计模式”的所谓“四人帮”一书。这里似乎是 PDF 的公共版本:https : //github.com/dieforfree/edsebooks/blob/master/ebooks/Design%20Patterns%2C%20Elements%20of%20Reusable%20Object-Oriented%20Software.pdf

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++-从另一个类构造函数调用一个类构造函数

C ++试图将类传递给另一个类的构造函数

稍后在 C++ 中的另一个类方法中调用类构造函数

您好,我是下面代码编程的新手,我想将一个类放入另一个类,但显示错误(C++)

使用另一个类C ++构造一个类

C ++中带有另一个模板类作为参数的构造函数

C ++使用另一个类的函数

c++ 类函数在另一个函数中无法按预期工作

对包含另一个派生类的C ++类的继承

可以抽象类继承另一个抽象类C#

从另一个类继承时,C++“不是类或结构名称”错误

为什么从另一个构造函数内部调用的C ++构造函数不会修改类变量?

我可以从 C# 中另一个类的构造函数调用构造函数吗?

无法从Visual Studio C ++中的另一个类访问一个类

从另一个类访问 C# 类

C ++从另一个类访问类成员

将值设置为另一个类的属性的类对象 - 目标 c

C ++-如何在另一个类中使用私有构造函数实例化对象

C#用默认构造函数的另一个类的字符串填充List <T>

构造函数中的 C++ 语法错误 - 参数是对来自另一个类的对象的引用

如何在 C++ 中使用具有另一个类对象的构造函数?

C ++多态性:如何测试一个类是否衍生自另一个基类?

检查一个对象的类是否派生自C ++中另一个对象的类

C ++ Diamond继承-与另一个非基类共享变量

如何使用继承从C#中的另一个类进行调用和对象

C ++将成员函数引用从一个类实例传递到另一个类实例

C ++实例化对象,该对象在另一个没有指针的类构造函数中没有默认构造函数

C ++在另一个函数内调用类函数

C ++中另一个类及其父类的共享类