我正在尝试构建一个从另一个类继承的类,并通过解析文本文件来初始化自己。所以我有:
在我的头文件(都在同一个文件中):
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] 删除。
我来说两句